home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 15 / BBS in a box XV-2.iso / Files II / Prog / N-P / NString 1.0 beta.sit / NString 1.0 beta / Sources / NString_Substring.cxx < prev    next >
MacBinary  |  1995-01-21  |  18.9 KB  |  [TEXT/KAHL]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, Sat Jan 21 10:12:56 1995, modified Sat Jan 21 10:12:56 1995, creator Think C, type ASCII, 18650 bytes "NString_Substring.cxx" , at 0x495a 444 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[KAHL]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 15 4e 53 74 72 69 6e | 67 5f 53 75 62 73 74 72 |..NStrin|g_Substr|
|00000010| 69 6e 67 2e 63 78 78 00 | 00 00 00 00 00 00 00 00 |ing.cxx.|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4b 41 48 | 4c 00 00 00 00 00 00 00 |.TEXTKAH|L.......|
|00000050| 00 00 00 00 00 48 da 00 | 00 01 bc ab 46 d4 f8 ab |.....H..|....F...|
|00000060| 46 d4 f8 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |F.......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 32 01 00 00 |........|....2...|
|00000080| 0d 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 72 69 6e |.#includ|e <strin|
|00000090| 67 2e 68 3e 0d 23 69 6e | 63 6c 75 64 65 20 3c 73 |g.h>.#in|clude <s|
|000000a0| 74 64 6c 69 62 2e 68 3e | 0d 23 69 6e 63 6c 75 64 |tdlib.h>|.#includ|
|000000b0| 65 20 3c 6c 69 6d 69 74 | 73 2e 68 3e 0d 0d 23 69 |e <limit|s.h>..#i|
|000000c0| 6e 63 6c 75 64 65 20 22 | 4e 53 74 72 69 6e 67 2e |nclude "|NString.|
|000000d0| 68 22 0d 23 69 6e 63 6c | 75 64 65 20 22 4e 53 74 |h".#incl|ude "NSt|
|000000e0| 72 69 6e 67 5f 4d 69 73 | 63 2e 68 22 0d 0d 2f 2f |ring_Mis|c.h"..//|
|000000f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000100| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000110| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000120| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000130| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000140| 5f 0d 0d 63 68 61 72 20 | 2a 4e 53 74 72 69 6e 67 |_..char |*NString|
|00000150| 3a 3a 73 74 72 69 6e 67 | 20 28 76 6f 69 64 29 20 |::string| (void) |
|00000160| 63 6f 6e 73 74 0d 7b 0d | 09 63 68 61 72 20 2a 72 |const.{.|.char *r|
|00000170| 65 73 75 6c 74 3b 0d 09 | 0d 09 69 66 20 28 28 72 |esult;..|..if ((r|
|00000180| 65 73 75 6c 74 20 3d 20 | 28 63 68 61 72 20 2a 29 |esult = |(char *)|
|00000190| 6d 61 6c 6c 6f 63 28 73 | 62 2d 3e 6c 65 6e 2b 31 |malloc(s|b->len+1|
|000001a0| 29 29 20 3d 3d 20 4e 55 | 4c 4c 29 0d 09 09 4f 55 |)) == NU|LL)...OU|
|000001b0| 54 5f 4f 46 5f 4d 45 4d | 28 22 73 74 72 69 6e 67 |T_OF_MEM|("string|
|000001c0| 20 28 76 6f 69 64 29 20 | 63 6f 6e 73 74 22 29 3b | (void) |const");|
|000001d0| 0d 09 73 74 72 63 70 79 | 28 72 65 73 75 6c 74 2c |..strcpy|(result,|
|000001e0| 20 73 62 2d 3e 73 74 72 | 29 3b 0d 09 72 65 74 75 | sb->str|);..retu|
|000001f0| 72 6e 20 28 72 65 73 75 | 6c 74 29 3b 0d 7d 0d 0d |rn (resu|lt);.}..|
|00000200| 2f 2f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |//______|________|
|00000210| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000220| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000230| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000240| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000250| 5f 5f 5f 0d 0d 4e 53 74 | 72 69 6e 67 20 4e 53 74 |___..NSt|ring NSt|
|00000260| 72 69 6e 67 3a 3a 66 72 | 6f 6d 74 6f 20 28 75 6e |ring::fr|omto (un|
|00000270| 73 69 67 6e 65 64 20 6c | 6f 6e 67 20 69 6e 74 20 |signed l|ong int |
|00000280| 66 72 6f 6d 2c 20 75 6e | 73 69 67 6e 65 64 20 6c |from, un|signed l|
|00000290| 6f 6e 67 20 69 6e 74 20 | 74 6f 29 20 63 6f 6e 73 |ong int |to) cons|
|000002a0| 74 0d 7b 0d 09 75 6e 73 | 69 67 6e 65 64 20 6c 6f |t.{..uns|igned lo|
|000002b0| 6e 67 20 69 6e 74 20 6e | 65 77 5f 6c 65 6e 67 74 |ng int n|ew_lengt|
|000002c0| 68 3b 0d 09 0d 09 69 66 | 20 28 73 62 2d 3e 6c 65 |h;....if| (sb->le|
|000002d0| 6e 20 3d 3d 20 30 29 09 | 09 09 09 09 09 09 09 09 |n == 0).|........|
|000002e0| 09 09 09 09 2f 2f 20 61 | 6d 20 49 20 61 6e 20 65 |....// a|m I an e|
|000002f0| 6d 70 74 79 20 73 74 72 | 69 6e 67 20 3f 0d 09 09 |mpty str|ing ?...|
|00000300| 72 65 74 75 72 6e 20 28 | 2a 74 68 69 73 29 3b 0d |return (|*this);.|
|00000310| 09 69 66 20 28 28 66 72 | 6f 6d 20 3e 20 74 6f 29 |.if ((fr|om > to)|
|00000320| 20 7c 7c 20 28 66 72 6f | 6d 20 3e 20 73 62 2d 3e | || (fro|m > sb->|
|00000330| 6c 65 6e 29 29 09 09 09 | 09 09 09 09 2f 2f 09 65 |len))...|....//.e|
|00000340| 6d 70 74 79 20 72 61 6e | 67 65 20 73 70 65 63 69 |mpty ran|ge speci|
|00000350| 66 69 65 64 20 6f 72 20 | 72 61 6e 67 65 20 6f 75 |fied or |range ou|
|00000360| 74 73 69 64 65 20 6f 66 | 20 4e 53 74 72 69 6e 67 |tside of| NString|
|00000370| 20 3f 0d 09 09 72 65 74 | 75 72 6e 20 4e 53 74 72 | ?...ret|urn NStr|
|00000380| 69 6e 67 28 29 3b 0d 09 | 69 66 20 28 74 6f 20 3e |ing();..|if (to >|
|00000390| 20 73 62 2d 3e 6c 65 6e | 29 09 09 09 09 09 09 09 | sb->len|).......|
|000003a0| 09 09 09 09 09 09 09 2f | 2f 20 22 74 6f 22 20 74 |......./|/ "to" t|
|000003b0| 6f 6f 20 62 69 67 20 3f | 0d 09 09 74 6f 20 3d 20 |oo big ?|...to = |
|000003c0| 73 62 2d 3e 6c 65 6e 20 | 2d 20 31 3b 0d 09 65 6c |sb->len |- 1;..el|
|000003d0| 73 65 0d 09 09 69 66 20 | 28 74 6f 20 3e 20 30 29 |se...if |(to > 0)|
|000003e0| 0d 09 09 09 74 6f 2d 2d | 3b 0d 09 09 65 6c 73 65 |....to--|;...else|
|000003f0| 0d 09 09 09 72 65 74 75 | 72 6e 20 4e 53 74 72 69 |....retu|rn NStri|
|00000400| 6e 67 28 29 3b 0d 0d 09 | 69 66 20 28 66 72 6f 6d |ng();...|if (from|
|00000410| 20 3e 20 30 29 0d 09 09 | 66 72 6f 6d 2d 2d 3b 0d | > 0)...|from--;.|
|00000420| 09 09 0d 09 69 66 20 28 | 28 6e 65 77 5f 6c 65 6e |....if (|(new_len|
|00000430| 67 74 68 20 3d 20 74 6f | 20 2d 20 66 72 6f 6d 20 |gth = to| - from |
|00000440| 2b 20 31 29 20 3d 3d 20 | 73 62 2d 3e 6c 65 6e 29 |+ 1) == |sb->len)|
|00000450| 0d 09 09 72 65 74 75 72 | 6e 20 28 2a 74 68 69 73 |...retur|n (*this|
|00000460| 29 3b 0d 09 65 6c 73 65 | 0d 09 7b 0d 09 09 4e 53 |);..else|..{...NS|
|00000470| 74 72 69 6e 67 20 72 65 | 73 75 6c 74 28 6e 65 77 |tring re|sult(new|
|00000480| 5f 6c 65 6e 67 74 68 29 | 3b 0d 09 09 0d 09 09 73 |_length)|;......s|
|00000490| 74 72 6e 63 70 79 28 72 | 65 73 75 6c 74 2e 73 62 |trncpy(r|esult.sb|
|000004a0| 2d 3e 73 74 72 2c 20 73 | 62 2d 3e 73 74 72 2b 66 |->str, s|b->str+f|
|000004b0| 72 6f 6d 2c 20 6e 65 77 | 5f 6c 65 6e 67 74 68 29 |rom, new|_length)|
|000004c0| 3b 0d 09 09 72 65 74 75 | 72 6e 20 28 72 65 73 75 |;...retu|rn (resu|
|000004d0| 6c 74 29 3b 0d 09 7d 0d | 7d 0d 0d 2f 2f 5f 5f 5f |lt);..}.|}..//___|
|000004e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000004f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000500| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000510| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000520| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 0d 0d |________|______..|
|00000530| 4e 53 74 72 69 6e 67 26 | 20 4e 53 74 72 69 6e 67 |NString&| NString|
|00000540| 3a 3a 63 75 74 28 75 6e | 73 69 67 6e 65 64 20 6c |::cut(un|signed l|
|00000550| 6f 6e 67 20 69 6e 74 20 | 61 74 2c 20 75 6e 73 69 |ong int |at, unsi|
|00000560| 67 6e 65 64 20 6c 6f 6e | 67 20 69 6e 74 20 6e 29 |gned lon|g int n)|
|00000570| 0d 7b 09 0d 09 63 6f 6e | 73 74 20 63 68 61 72 20 |.{...con|st char |
|00000580| 2a 66 6e 61 6d 65 20 3d | 20 22 63 75 74 20 28 75 |*fname =| "cut (u|
|00000590| 6e 73 69 67 6e 65 64 20 | 6c 6f 6e 67 20 69 6e 74 |nsigned |long int|
|000005a0| 2c 20 75 6e 73 69 67 6e | 65 64 20 6c 6f 6e 67 20 |, unsign|ed long |
|000005b0| 69 6e 74 29 22 3b 0d 09 | 75 6e 73 69 67 6e 65 64 |int)";..|unsigned|
|000005c0| 20 6c 6f 6e 67 20 69 6e | 74 20 66 69 6e 61 6c 5f | long in|t final_|
|000005d0| 70 61 72 74 3b 0d 09 75 | 6e 73 69 67 6e 65 64 20 |part;..u|nsigned |
|000005e0| 6c 6f 6e 67 20 69 6e 74 | 20 6e 65 77 5f 6c 65 6e |long int| new_len|
|000005f0| 67 74 68 3b 0d 0d 09 69 | 66 20 28 61 74 20 3e 20 |gth;...i|f (at > |
|00000600| 30 29 0d 09 09 61 74 2d | 2d 3b 0d 09 65 6c 73 65 |0)...at-|-;..else|
|00000610| 0d 09 09 69 66 20 28 6e | 20 3e 20 30 29 0d 09 09 |...if (n| > 0)...|
|00000620| 09 6e 2d 2d 3b 0d 0d 09 | 69 66 20 28 28 73 62 2d |.n--;...|if ((sb-|
|00000630| 3e 6c 65 6e 20 3d 3d 20 | 30 29 20 7c 7c 20 28 6e |>len == |0) || (n|
|00000640| 20 3d 3d 20 30 29 20 7c | 7c 20 28 61 74 20 3e 3d | == 0) ||| (at >=|
|00000650| 20 73 62 2d 3e 6c 65 6e | 29 29 0d 09 09 72 65 74 | sb->len|))...ret|
|00000660| 75 72 6e 20 28 2a 74 68 | 69 73 29 3b 0d 09 0d 09 |urn (*th|is);....|
|00000670| 69 66 20 28 28 66 69 6e | 61 6c 5f 70 61 72 74 20 |if ((fin|al_part |
|00000680| 3d 20 61 74 20 2b 20 6e | 29 20 3c 20 61 74 29 09 |= at + n|) < at).|
|00000690| 09 09 09 09 09 09 09 09 | 09 09 09 09 2f 2f 20 74 |........|....// t|
|000006a0| 65 73 74 20 66 6f 72 20 | 6f 76 65 72 66 6c 6f 77 |est for |overflow|
|000006b0| 0d 09 7b 0d 09 09 66 69 | 6e 61 6c 5f 70 61 72 74 |..{...fi|nal_part|
|000006c0| 20 3d 20 55 4c 4f 4e 47 | 5f 4d 41 58 3b 0d 09 09 | = ULONG|_MAX;...|
|000006d0| 6e 65 77 5f 6c 65 6e 67 | 74 68 20 3d 20 61 74 3b |new_leng|th = at;|
|000006e0| 0d 09 7d 0d 09 65 6c 73 | 65 0d 09 09 6e 65 77 5f |..}..els|e...new_|
|000006f0| 6c 65 6e 67 74 68 20 3d | 20 28 66 69 6e 61 6c 5f |length =| (final_|
|00000700| 70 61 72 74 20 3e 3d 20 | 73 62 2d 3e 6c 65 6e 29 |part >= |sb->len)|
|00000710| 20 3f 20 61 74 20 3a 20 | 73 62 2d 3e 6c 65 6e 20 | ? at : |sb->len |
|00000720| 2d 20 6e 3b 0d 09 0d 09 | 69 66 20 28 73 62 2d 3e |- n;....|if (sb->|
|00000730| 72 65 66 73 20 3e 20 31 | 29 0d 09 7b 0d 09 09 73 |refs > 1|)..{...s|
|00000740| 74 72 62 6f 64 79 20 2a | 6f 6c 64 5f 73 62 20 3d |trbody *|old_sb =|
|00000750| 20 73 62 3b 0d 09 09 0d | 09 09 69 66 20 28 21 20 | sb;....|..if (! |
|00000760| 47 65 74 4e 65 77 53 42 | 28 6e 65 77 5f 6c 65 6e |GetNewSB|(new_len|
|00000770| 67 74 68 29 29 0d 09 09 | 09 4f 55 54 5f 4f 46 5f |gth))...|.OUT_OF_|
|00000780| 4d 45 4d 28 66 6e 61 6d | 65 29 3b 0d 09 09 69 66 |MEM(fnam|e);...if|
|00000790| 20 28 61 74 20 3e 20 30 | 29 0d 09 09 09 6d 65 6d | (at > 0|)....mem|
|000007a0| 63 70 79 28 73 62 2d 3e | 73 74 72 2c 20 6f 6c 64 |cpy(sb->|str, old|
|000007b0| 5f 73 62 2d 3e 73 74 72 | 2c 20 61 74 29 3b 09 09 |_sb->str|, at);..|
|000007c0| 09 09 09 09 09 09 09 2f | 2f 20 63 6f 70 79 20 69 |......./|/ copy i|
|000007d0| 6e 69 74 69 61 6c 20 72 | 65 6d 61 69 6e 69 6e 67 |nitial r|emaining|
|000007e0| 20 70 61 72 74 20 6f 66 | 20 73 74 72 69 6e 67 0d | part of| string.|
|000007f0| 09 09 69 66 20 28 66 69 | 6e 61 6c 5f 70 61 72 74 |..if (fi|nal_part|
|00000800| 20 3c 20 6f 6c 64 5f 73 | 62 2d 3e 6c 65 6e 29 0d | < old_s|b->len).|
|00000810| 09 09 09 73 74 72 63 70 | 79 28 73 62 2d 3e 73 74 |...strcp|y(sb->st|
|00000820| 72 20 2b 20 61 74 2c 20 | 6f 6c 64 5f 73 62 2d 3e |r + at, |old_sb->|
|00000830| 73 74 72 20 2b 20 66 69 | 6e 61 6c 5f 70 61 72 74 |str + fi|nal_part|
|00000840| 29 3b 09 09 09 09 2f 2f | 20 63 6f 70 79 20 66 69 |);....//| copy fi|
|00000850| 6e 61 6c 20 72 65 6d 61 | 69 6e 69 6e 67 20 70 61 |nal rema|ining pa|
|00000860| 72 74 20 6f 66 20 73 74 | 72 69 6e 67 0d 09 7d 0d |rt of st|ring..}.|
|00000870| 09 65 6c 73 65 0d 09 7b | 0d 09 09 69 66 20 28 66 |.else..{|...if (f|
|00000880| 69 6e 61 6c 5f 70 61 72 | 74 20 3c 20 73 62 2d 3e |inal_par|t < sb->|
|00000890| 6c 65 6e 29 09 09 09 09 | 09 09 09 09 09 09 09 09 |len)....|........|
|000008a0| 09 09 2f 2f 20 74 68 65 | 72 65 20 69 73 20 61 20 |..// the|re is a |
|000008b0| 66 69 6e 61 6c 20 70 61 | 72 74 20 74 6f 20 6d 6f |final pa|rt to mo|
|000008c0| 76 65 0d 09 09 09 6d 65 | 6d 6d 6f 76 65 28 73 62 |ve....me|mmove(sb|
|000008d0| 2d 3e 73 74 72 20 2b 20 | 61 74 2c 20 73 62 2d 3e |->str + |at, sb->|
|000008e0| 73 74 72 20 2b 20 66 69 | 6e 61 6c 5f 70 61 72 74 |str + fi|nal_part|
|000008f0| 2c 20 73 62 2d 3e 6c 65 | 6e 20 2d 20 66 69 6e 61 |, sb->le|n - fina|
|00000900| 6c 5f 70 61 72 74 20 2b | 20 31 29 3b 0d 09 09 65 |l_part +| 1);...e|
|00000910| 6c 73 65 0d 09 09 09 73 | 62 2d 3e 73 74 72 5b 61 |lse....s|b->str[a|
|00000920| 74 5d 20 3d 20 27 5c 30 | 27 3b 09 09 09 09 09 09 |t] = '\0|';......|
|00000930| 09 09 09 09 09 09 09 09 | 09 2f 2f 20 6f 74 68 65 |........|.// othe|
|00000940| 72 77 69 73 65 20 74 65 | 72 6d 69 6e 61 74 65 20 |rwise te|rminate |
|00000950| 73 74 72 69 6e 67 20 61 | 66 74 65 72 20 69 6e 69 |string a|fter ini|
|00000960| 74 69 61 6c 20 70 61 72 | 74 0d 0d 09 09 73 62 2d |tial par|t....sb-|
|00000970| 3e 6c 65 6e 20 3d 20 6e | 65 77 5f 6c 65 6e 67 74 |>len = n|ew_lengt|
|00000980| 68 3b 0d 0d 09 09 69 66 | 20 28 21 20 52 65 61 6c |h;....if| (! Real|
|00000990| 6c 6f 63 53 74 72 42 75 | 66 28 6e 65 77 5f 6c 65 |locStrBu|f(new_le|
|000009a0| 6e 67 74 68 29 29 09 09 | 09 09 09 09 09 09 09 09 |ngth))..|........|
|000009b0| 09 2f 2f 20 73 68 72 69 | 6e 6b 20 73 74 72 69 6e |.// shri|nk strin|
|000009c0| 67 27 73 20 6d 65 6d 6f | 72 79 20 62 6c 6f 63 6b |g's memo|ry block|
|000009d0| 0d 09 09 09 4f 55 54 5f | 4f 46 5f 4d 45 4d 28 66 |....OUT_|OF_MEM(f|
|000009e0| 6e 61 6d 65 29 3b 09 09 | 09 09 09 09 09 09 09 09 |name);..|........|
|000009f0| 09 09 09 2f 2f 20 74 68 | 69 73 20 22 4f 75 74 20 |...// th|is "Out |
|00000a00| 6f 66 20 4d 65 6d 6f 72 | 79 22 20 73 68 6f 75 6c |of Memor|y" shoul|
|00000a10| 64 20 6e 65 76 65 72 20 | 68 61 70 70 65 6e 20 2e |d never |happen .|
|00000a20| 2e 2e 0d 09 7d 0d 09 72 | 65 74 75 72 6e 20 28 2a |....}..r|eturn (*|
|00000a30| 74 68 69 73 29 3b 0d 7d | 0d 0d 2f 2f 5f 5f 5f 5f |this);.}|..//____|
|00000a40| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000a50| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000a60| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000a70| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000a80| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 0d 0d 75 |________|_____..u|
|00000a90| 6e 73 69 67 6e 65 64 20 | 6c 6f 6e 67 20 69 6e 74 |nsigned |long int|
|00000aa0| 20 4e 53 74 72 69 6e 67 | 3a 3a 6c 65 66 74 70 6f | NString|::leftpo|
|00000ab0| 73 28 63 6f 6e 73 74 20 | 63 68 61 72 20 2a 73 29 |s(const |char *s)|
|00000ac0| 20 63 6f 6e 73 74 0d 7b | 0d 09 63 68 61 72 20 2a | const.{|..char *|
|00000ad0| 70 6f 73 3b 0d 09 0d 09 | 69 66 20 28 28 70 6f 73 |pos;....|if ((pos|
|00000ae0| 20 3d 20 73 74 72 73 74 | 72 28 73 62 2d 3e 73 74 | = strst|r(sb->st|
|00000af0| 72 2c 20 73 29 29 20 21 | 3d 20 4e 55 4c 4c 29 0d |r, s)) !|= NULL).|
|00000b00| 09 09 72 65 74 75 72 6e | 20 28 75 6e 73 69 67 6e |..return| (unsign|
|00000b10| 65 64 20 6c 6f 6e 67 20 | 69 6e 74 29 28 70 6f 73 |ed long |int)(pos|
|00000b20| 20 2d 20 73 62 2d 3e 73 | 74 72 20 2b 20 31 29 3b | - sb->s|tr + 1);|
|00000b30| 0d 09 65 6c 73 65 0d 09 | 09 72 65 74 75 72 6e 20 |..else..|.return |
|00000b40| 28 30 29 3b 0d 7d 0d 0d | 2f 2f 5f 5f 5f 5f 5f 5f |(0);.}..|//______|
|00000b50| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000b60| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000b70| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000b80| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000b90| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 0d 0d 75 6e 73 |________|___..uns|
|00000ba0| 69 67 6e 65 64 20 6c 6f | 6e 67 20 69 6e 74 20 4e |igned lo|ng int N|
|00000bb0| 53 74 72 69 6e 67 3a 3a | 6c 65 66 74 70 6f 73 28 |String::|leftpos(|
|00000bc0| 63 6f 6e 73 74 20 63 68 | 61 72 20 63 29 20 63 6f |const ch|ar c) co|
|00000bd0| 6e 73 74 0d 7b 0d 09 75 | 6e 73 69 67 6e 65 64 20 |nst.{..u|nsigned |
|00000be0| 6c 6f 6e 67 20 69 6e 74 | 20 69 2c 20 70 6f 73 20 |long int| i, pos |
|00000bf0| 3d 20 30 3b 0d 09 0d 09 | 69 66 20 28 73 62 2d 3e |= 0;....|if (sb->|
|00000c00| 6c 65 6e 20 3d 3d 20 30 | 29 0d 09 09 72 65 74 75 |len == 0|)...retu|
|00000c10| 72 6e 20 28 30 29 3b 09 | 09 09 09 09 09 09 09 09 |rn (0);.|........|
|00000c20| 09 09 09 09 09 09 09 09 | 09 2f 2f 20 6e 6f 20 63 |........|.// no c|
|00000c30| 68 61 72 61 63 74 65 72 | 20 63 61 6e 20 62 65 20 |haracter| can be |
|00000c40| 66 6f 75 6e 64 20 69 6e | 20 61 6e 20 65 6d 70 74 |found in| an empt|
|00000c50| 79 20 73 74 72 69 6e 67 | 0d 0d 09 66 6f 72 20 28 |y string|...for (|
|00000c60| 69 3d 30 3b 20 28 69 20 | 3c 20 73 62 2d 3e 6c 65 |i=0; (i |< sb->le|
|00000c70| 6e 29 20 26 26 20 28 70 | 6f 73 20 3d 3d 20 30 29 |n) && (p|os == 0)|
|00000c80| 3b 20 69 2b 2b 29 0d 09 | 09 69 66 20 28 73 62 2d |; i++)..|.if (sb-|
|00000c90| 3e 73 74 72 5b 69 5d 20 | 3d 3d 20 63 29 0d 09 09 |>str[i] |== c)...|
|00000ca0| 09 70 6f 73 20 3d 20 69 | 2b 31 3b 0d 09 09 09 0d |.pos = i|+1;.....|
|00000cb0| 09 72 65 74 75 72 6e 20 | 28 70 6f 73 29 3b 0d 7d |.return |(pos);.}|
|00000cc0| 0d 0d 2f 2f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |..//____|________|
|00000cd0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000ce0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000cf0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000d00| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000d10| 5f 5f 5f 5f 5f 0d 0d 75 | 6e 73 69 67 6e 65 64 20 |_____..u|nsigned |
|00000d20| 6c 6f 6e 67 20 69 6e 74 | 20 4e 53 74 72 69 6e 67 |long int| NString|
|00000d30| 3a 3a 6c 65 66 74 70 6f | 73 20 28 63 6f 6e 73 74 |::leftpo|s (const|
|00000d40| 20 41 6c 70 68 61 62 65 | 74 26 20 61 29 20 63 6f | Alphabe|t& a) co|
|00000d50| 6e 73 74 0d 7b 0d 09 75 | 6e 73 69 67 6e 65 64 20 |nst.{..u|nsigned |
|00000d60| 6c 6f 6e 67 20 69 6e 74 | 20 69 2c 20 70 6f 73 20 |long int| i, pos |
|00000d70| 3d 20 30 3b 0d 0d 09 69 | 66 20 28 73 62 2d 3e 6c |= 0;...i|f (sb->l|
|00000d80| 65 6e 20 3d 3d 20 30 29 | 0d 09 09 72 65 74 75 72 |en == 0)|...retur|
|00000d90| 6e 20 28 30 29 3b 09 09 | 09 09 09 09 09 09 09 09 |n (0);..|........|
|00000da0| 09 09 09 09 09 09 09 09 | 2f 2f 20 6e 6f 20 63 68 |........|// no ch|
|00000db0| 61 72 61 63 74 65 72 20 | 63 61 6e 20 62 65 20 66 |aracter |can be f|
|00000dc0| 6f 75 6e 64 20 69 6e 20 | 61 6e 20 65 6d 70 74 79 |ound in |an empty|
|00000dd0| 20 73 74 72 69 6e 67 0d | 09 0d 09 66 6f 72 20 28 | string.|...for (|
|00000de0| 69 3d 30 3b 20 28 69 20 | 3c 20 73 62 2d 3e 6c 65 |i=0; (i |< sb->le|
|00000df0| 6e 29 20 26 26 20 28 70 | 6f 73 20 3d 3d 20 30 29 |n) && (p|os == 0)|
|00000e00| 3b 20 69 2b 2b 29 0d 09 | 09 69 66 20 28 61 2e 63 |; i++)..|.if (a.c|
|00000e10| 6f 6e 74 61 69 6e 73 28 | 73 62 2d 3e 73 74 72 5b |ontains(|sb->str[|
|00000e20| 69 5d 29 29 0d 09 09 09 | 70 6f 73 20 3d 20 69 2b |i]))....|pos = i+|
|00000e30| 31 3b 0d 09 09 09 0d 09 | 72 65 74 75 72 6e 20 28 |1;......|return (|
|00000e40| 70 6f 73 29 3b 0d 7d 0d | 0d 2f 2f 5f 5f 5f 5f 5f |pos);.}.|.//_____|
|00000e50| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000e60| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000e70| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000e80| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00000e90| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 0d 0d 75 6e |________|____..un|
|00000ea0| 73 69 67 6e 65 64 20 6c | 6f 6e 67 20 69 6e 74 20 |signed l|ong int |
|00000eb0| 4e 53 74 72 69 6e 67 3a | 3a 72 69 67 68 74 70 6f |NString:|:rightpo|
|00000ec0| 73 28 63 6f 6e 73 74 20 | 63 68 61 72 20 2a 73 29 |s(const |char *s)|
|00000ed0| 20 63 6f 6e 73 74 0d 7b | 0d 09 75 6e 73 69 67 6e | const.{|..unsign|
|00000ee0| 65 64 20 6c 6f 6e 67 20 | 69 6e 74 20 69 2c 20 70 |ed long |int i, p|
|00000ef0| 6f 73 20 3d 20 30 2c 20 | 73 5f 6c 65 6e 20 3d 20 |os = 0, |s_len = |
|00000f00| 73 74 72 6c 65 6e 28 73 | 29 3b 0d 09 0d 09 69 66 |strlen(s|);....if|
|00000f10| 20 28 73 5f 6c 65 6e 20 | 3d 3d 20 30 29 0d 09 09 | (s_len |== 0)...|
|00000f20| 72 65 74 75 72 6e 20 28 | 73 62 2d 3e 6c 65 6e 20 |return (|sb->len |
|00000f30| 2b 20 31 29 3b 09 09 09 | 09 09 09 09 09 09 09 09 |+ 1);...|........|
|00000f40| 09 09 09 09 2f 2f 20 61 | 6e 20 65 6d 70 74 79 20 |....// a|n empty |
|00000f50| 73 75 62 73 74 72 69 6e | 67 20 63 61 6e 20 62 65 |substrin|g can be|
|00000f60| 20 66 6f 75 6e 64 20 65 | 76 65 72 79 77 68 65 72 | found e|verywher|
|00000f70| 65 0d 09 69 66 20 28 73 | 5f 6c 65 6e 20 3e 20 73 |e..if (s|_len > s|
|00000f80| 62 2d 3e 6c 65 6e 29 0d | 09 09 72 65 74 75 72 6e |b->len).|..return|
|00000f90| 20 28 30 29 3b 09 09 09 | 09 09 09 09 09 09 09 09 | (0);...|........|
|00000fa0| 09 09 09 09 09 09 09 2f | 2f 20 73 75 62 73 74 72 |......./|/ substr|
|00000fb0| 69 6e 67 20 6c 6f 6e 67 | 65 72 20 74 68 61 6e 20 |ing long|er than |
|00000fc0| 65 6e 74 69 72 65 20 4e | 53 74 72 69 6e 67 0d 09 |entire N|String..|
|00000fd0| 66 6f 72 20 28 69 3d 73 | 62 2d 3e 6c 65 6e 20 2d |for (i=s|b->len -|
|00000fe0| 20 73 5f 6c 65 6e 20 2b | 20 31 3b 20 28 69 20 3e | s_len +| 1; (i >|
|00000ff0| 20 30 29 20 26 26 20 28 | 70 6f 73 20 3d 3d 20 30 | 0) && (|pos == 0|
|00001000| 29 3b 20 69 2d 2d 29 09 | 09 09 2f 2f 20 4e 6f 74 |); i--).|..// Not|
|00001010| 65 3a 20 28 69 20 3e 3d | 20 30 29 20 69 73 20 61 |e: (i >=| 0) is a|
|00001020| 6c 77 61 79 73 20 54 52 | 55 45 20 66 6f 72 20 75 |lways TR|UE for u|
|00001030| 6e 73 69 67 6e 65 64 20 | 69 6e 74 2c 0d 09 09 69 |nsigned |int,...i|
|00001040| 66 20 28 73 62 2d 3e 73 | 74 72 5b 69 2d 31 5d 20 |f (sb->s|tr[i-1] |
|00001050| 3d 3d 20 73 5b 30 5d 29 | 09 09 09 09 09 09 09 09 |== s[0])|........|
|00001060| 09 09 09 09 09 2f 2f 09 | 09 73 6f 20 74 68 65 20 |.....//.|.so the |
|00001070| 72 61 6e 67 65 20 66 6f | 72 20 69 20 68 61 73 20 |range fo|r i has |
|00001080| 62 65 65 6e 20 6f 66 66 | 73 65 74 20 62 79 20 2b |been off|set by +|
|00001090| 31 0d 09 09 09 69 66 20 | 28 73 74 72 6e 63 6d 70 |1....if |(strncmp|
|000010a0| 28 73 62 2d 3e 73 74 72 | 20 2b 20 69 2d 31 2c 20 |(sb->str| + i-1, |
|000010b0| 73 2c 20 73 5f 6c 65 6e | 29 20 3d 3d 20 30 29 0d |s, s_len|) == 0).|
|000010c0| 09 09 09 09 70 6f 73 20 | 3d 20 69 3b 0d 09 09 09 |....pos |= i;....|
|000010d0| 0d 09 72 65 74 75 72 6e | 20 28 70 6f 73 29 3b 0d |..return| (pos);.|
|000010e0| 7d 0d 0d 2f 2f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |}..//___|________|
|000010f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001100| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001110| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001120| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001130| 5f 5f 5f 5f 5f 5f 0d 0d | 75 6e 73 69 67 6e 65 64 |______..|unsigned|
|00001140| 20 6c 6f 6e 67 20 69 6e | 74 20 4e 53 74 72 69 6e | long in|t NStrin|
|00001150| 67 3a 3a 72 69 67 68 74 | 70 6f 73 28 63 6f 6e 73 |g::right|pos(cons|
|00001160| 74 20 63 68 61 72 20 63 | 29 20 63 6f 6e 73 74 0d |t char c|) const.|
|00001170| 7b 0d 09 75 6e 73 69 67 | 6e 65 64 20 6c 6f 6e 67 |{..unsig|ned long|
|00001180| 20 69 6e 74 20 69 2c 20 | 70 6f 73 20 3d 20 30 3b | int i, |pos = 0;|
|00001190| 0d 09 0d 09 69 66 20 28 | 73 62 2d 3e 6c 65 6e 20 |....if (|sb->len |
|000011a0| 3d 3d 20 30 29 0d 09 09 | 72 65 74 75 72 6e 20 28 |== 0)...|return (|
|000011b0| 30 29 3b 09 09 09 09 09 | 09 09 09 09 09 09 09 09 |0);.....|........|
|000011c0| 09 09 09 09 09 2f 2f 20 | 6e 6f 20 63 68 61 72 61 |.....// |no chara|
|000011d0| 63 74 65 72 20 63 61 6e | 20 62 65 20 66 6f 75 6e |cter can| be foun|
|000011e0| 64 20 69 6e 20 61 6e 20 | 65 6d 70 74 79 20 73 74 |d in an |empty st|
|000011f0| 72 69 6e 67 0d 09 09 0d | 09 66 6f 72 20 28 69 3d |ring....|.for (i=|
|00001200| 73 62 2d 3e 6c 65 6e 3b | 20 28 69 20 3e 20 30 29 |sb->len;| (i > 0)|
|00001210| 20 26 26 20 28 70 6f 73 | 20 3d 3d 20 30 29 3b 20 | && (pos| == 0); |
|00001220| 69 2d 2d 29 09 09 09 09 | 09 09 09 09 2f 2f 20 4e |i--)....|....// N|
|00001230| 6f 74 65 3a 20 28 69 20 | 3e 3d 20 30 29 20 69 73 |ote: (i |>= 0) is|
|00001240| 20 61 6c 77 61 79 73 20 | 54 52 55 45 20 66 6f 72 | always |TRUE for|
|00001250| 20 75 6e 73 69 67 6e 65 | 64 20 69 6e 74 2c 0d 09 | unsigne|d int,..|
|00001260| 09 69 66 20 28 73 62 2d | 3e 73 74 72 5b 69 2d 31 |.if (sb-|>str[i-1|
|00001270| 5d 20 3d 3d 20 63 29 09 | 09 09 09 09 09 09 09 09 |] == c).|........|
|00001280| 09 09 09 09 09 2f 2f 09 | 09 73 6f 20 74 68 65 20 |.....//.|.so the |
|00001290| 72 61 6e 67 65 20 66 6f | 72 20 69 20 68 61 73 20 |range fo|r i has |
|000012a0| 62 65 65 6e 20 6f 66 66 | 73 65 74 20 62 79 20 2b |been off|set by +|
|000012b0| 31 0d 09 09 09 70 6f 73 | 20 3d 20 69 3b 0d 09 09 |1....pos| = i;...|
|000012c0| 09 0d 09 72 65 74 75 72 | 6e 20 28 70 6f 73 29 3b |...retur|n (pos);|
|000012d0| 0d 7d 0d 0d 2f 2f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |.}..//__|________|
|000012e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000012f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001300| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001310| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001320| 5f 5f 5f 5f 5f 5f 5f 0d | 0d 75 6e 73 69 67 6e 65 |_______.|.unsigne|
|00001330| 64 20 6c 6f 6e 67 20 69 | 6e 74 20 4e 53 74 72 69 |d long i|nt NStri|
|00001340| 6e 67 3a 3a 72 69 67 68 | 74 70 6f 73 28 63 6f 6e |ng::righ|tpos(con|
|00001350| 73 74 20 41 6c 70 68 61 | 62 65 74 26 20 61 29 20 |st Alpha|bet& a) |
|00001360| 63 6f 6e 73 74 0d 7b 0d | 09 75 6e 73 69 67 6e 65 |const.{.|.unsigne|
|00001370| 64 20 6c 6f 6e 67 20 69 | 6e 74 20 69 2c 20 70 6f |d long i|nt i, po|
|00001380| 73 20 3d 20 30 3b 0d 09 | 0d 09 69 66 20 28 73 62 |s = 0;..|..if (sb|
|00001390| 2d 3e 6c 65 6e 20 3d 3d | 20 30 29 0d 09 09 72 65 |->len ==| 0)...re|
|000013a0| 74 75 72 6e 20 28 30 29 | 3b 09 09 09 09 09 09 09 |turn (0)|;.......|
|000013b0| 09 09 09 09 09 09 09 09 | 09 09 09 2f 2f 20 6e 6f |........|...// no|
|000013c0| 20 63 68 61 72 61 63 74 | 65 72 20 63 61 6e 20 62 | charact|er can b|
|000013d0| 65 20 66 6f 75 6e 64 20 | 69 6e 20 61 6e 20 65 6d |e found |in an em|
|000013e0| 70 74 79 20 73 74 72 69 | 6e 67 0d 09 09 0d 09 66 |pty stri|ng.....f|
|000013f0| 6f 72 20 28 69 3d 73 62 | 2d 3e 6c 65 6e 3b 20 28 |or (i=sb|->len; (|
|00001400| 69 20 3e 20 30 29 20 26 | 26 20 28 70 6f 73 20 3d |i > 0) &|& (pos =|
|00001410| 3d 20 30 29 3b 20 69 2d | 2d 29 09 09 09 09 09 09 |= 0); i-|-)......|
|00001420| 09 09 2f 2f 20 4e 6f 74 | 65 3a 20 28 69 20 3e 3d |..// Not|e: (i >=|
|00001430| 20 30 29 20 69 73 20 61 | 6c 77 61 79 73 20 54 52 | 0) is a|lways TR|
|00001440| 55 45 20 66 6f 72 20 75 | 6e 73 69 67 6e 65 64 20 |UE for u|nsigned |
|00001450| 69 6e 74 2c 0d 09 09 69 | 66 20 28 61 2e 63 6f 6e |int,...i|f (a.con|
|00001460| 74 61 69 6e 73 28 73 62 | 2d 3e 73 74 72 5b 69 2d |tains(sb|->str[i-|
|00001470| 31 5d 29 29 09 09 09 09 | 09 09 09 09 09 09 09 09 |1]))....|........|
|00001480| 2f 2f 09 09 73 6f 20 74 | 68 65 20 72 61 6e 67 65 |//..so t|he range|
|00001490| 20 66 6f 72 20 69 20 68 | 61 73 20 62 65 65 6e 20 | for i h|as been |
|000014a0| 6f 66 66 73 65 74 20 62 | 79 20 2b 31 0d 09 09 09 |offset b|y +1....|
|000014b0| 70 6f 73 20 3d 20 69 3b | 0d 09 09 09 0d 09 72 65 |pos = i;|......re|
|000014c0| 74 75 72 6e 20 28 70 6f | 73 29 3b 0d 7d 0d 0d 2f |turn (po|s);.}../|
|000014d0| 2f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |/_______|________|
|000014e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000014f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001500| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001510| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001520| 5f 5f 0d 0d 4e 53 74 72 | 69 6e 67 20 4e 53 74 72 |__..NStr|ing NStr|
|00001530| 69 6e 67 3a 3a 6c 65 66 | 74 6f 66 20 28 63 6f 6e |ing::lef|tof (con|
|00001540| 73 74 20 63 68 61 72 20 | 2a 63 6f 6e 74 65 78 74 |st char |*context|
|00001550| 29 20 63 6f 6e 73 74 0d | 7b 0d 09 75 6e 73 69 67 |) const.|{..unsig|
|00001560| 6e 65 64 20 6c 6f 6e 67 | 20 69 6e 74 20 70 6f 73 |ned long| int pos|
|00001570| 20 3d 20 6c 65 66 74 70 | 6f 73 28 63 6f 6e 74 65 | = leftp|os(conte|
|00001580| 78 74 29 3b 0d 09 0d 09 | 69 66 20 28 70 6f 73 20 |xt);....|if (pos |
|00001590| 3d 3d 20 30 29 0d 09 09 | 72 65 74 75 72 6e 20 28 |== 0)...|return (|
|000015a0| 2a 74 68 69 73 29 3b 0d | 0d 09 72 65 74 75 72 6e |*this);.|..return|
|000015b0| 20 28 74 6f 28 70 6f 73 | 2d 31 29 29 3b 0d 7d 0d | (to(pos|-1));.}.|
|000015c0| 0d 2f 2f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |.//_____|________|
|000015d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000015e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000015f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001600| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001610| 5f 5f 5f 5f 0d 0d 4e 53 | 74 72 69 6e 67 20 4e 53 |____..NS|tring NS|
|00001620| 74 72 69 6e 67 3a 3a 6c | 65 66 74 6f 66 20 28 63 |tring::l|eftof (c|
|00001630| 6f 6e 73 74 20 63 68 61 | 72 20 63 6f 6e 74 65 78 |onst cha|r contex|
|00001640| 74 29 20 63 6f 6e 73 74 | 0d 7b 0d 09 75 6e 73 69 |t) const|.{..unsi|
|00001650| 67 6e 65 64 20 6c 6f 6e | 67 20 69 6e 74 20 70 6f |gned lon|g int po|
|00001660| 73 20 3d 20 6c 65 66 74 | 70 6f 73 28 63 6f 6e 74 |s = left|pos(cont|
|00001670| 65 78 74 29 3b 0d 09 0d | 09 69 66 20 28 70 6f 73 |ext);...|.if (pos|
|00001680| 20 3d 3d 20 30 29 0d 09 | 09 72 65 74 75 72 6e 20 | == 0)..|.return |
|00001690| 28 2a 74 68 69 73 29 3b | 0d 0d 09 72 65 74 75 72 |(*this);|...retur|
|000016a0| 6e 20 28 74 6f 28 70 6f | 73 2d 31 29 29 3b 0d 7d |n (to(po|s-1));.}|
|000016b0| 0d 0d 2f 2f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |..//____|________|
|000016c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000016d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000016e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000016f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001700| 5f 5f 5f 5f 5f 0d 0d 4e | 53 74 72 69 6e 67 20 4e |_____..N|String N|
|00001710| 53 74 72 69 6e 67 3a 3a | 6c 65 66 74 6f 66 20 28 |String::|leftof (|
|00001720| 63 6f 6e 73 74 20 4e 53 | 74 72 69 6e 67 26 20 63 |const NS|tring& c|
|00001730| 6f 6e 74 65 78 74 29 20 | 63 6f 6e 73 74 0d 7b 0d |ontext) |const.{.|
|00001740| 09 75 6e 73 69 67 6e 65 | 64 20 6c 6f 6e 67 20 69 |.unsigne|d long i|
|00001750| 6e 74 20 70 6f 73 20 3d | 20 6c 65 66 74 70 6f 73 |nt pos =| leftpos|
|00001760| 28 63 6f 6e 74 65 78 74 | 29 3b 0d 09 0d 09 69 66 |(context|);....if|
|00001770| 20 28 70 6f 73 20 3d 3d | 20 30 29 0d 09 09 72 65 | (pos ==| 0)...re|
|00001780| 74 75 72 6e 20 28 2a 74 | 68 69 73 29 3b 0d 0d 09 |turn (*t|his);...|
|00001790| 72 65 74 75 72 6e 20 28 | 74 6f 28 70 6f 73 2d 31 |return (|to(pos-1|
|000017a0| 29 29 3b 0d 7d 0d 0d 2f | 2f 5f 5f 5f 5f 5f 5f 5f |));.}../|/_______|
|000017b0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000017c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000017d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000017e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000017f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 0d 0d 4e 53 74 72 |________|__..NStr|
|00001800| 69 6e 67 20 4e 53 74 72 | 69 6e 67 3a 3a 6c 65 66 |ing NStr|ing::lef|
|00001810| 74 6f 66 20 28 63 6f 6e | 73 74 20 41 6c 70 68 61 |tof (con|st Alpha|
|00001820| 62 65 74 26 20 63 6f 6e | 74 65 78 74 29 20 63 6f |bet& con|text) co|
|00001830| 6e 73 74 0d 7b 0d 09 75 | 6e 73 69 67 6e 65 64 20 |nst.{..u|nsigned |
|00001840| 6c 6f 6e 67 20 69 6e 74 | 20 70 6f 73 20 3d 20 6c |long int| pos = l|
|00001850| 65 66 74 70 6f 73 28 63 | 6f 6e 74 65 78 74 29 3b |eftpos(c|ontext);|
|00001860| 0d 09 0d 09 69 66 20 28 | 70 6f 73 20 3d 3d 20 30 |....if (|pos == 0|
|00001870| 29 0d 09 09 72 65 74 75 | 72 6e 20 28 2a 74 68 69 |)...retu|rn (*thi|
|00001880| 73 29 3b 0d 0d 09 72 65 | 74 75 72 6e 20 28 74 6f |s);...re|turn (to|
|00001890| 28 70 6f 73 2d 31 29 29 | 3b 0d 7d 0d 0d 2f 2f 5f |(pos-1))|;.}..//_|
|000018a0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000018b0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000018c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000018d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000018e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000018f0| 0d 0d 4e 53 74 72 69 6e | 67 20 4e 53 74 72 69 6e |..NStrin|g NStrin|
|00001900| 67 3a 3a 61 74 6c 65 66 | 74 20 28 63 6f 6e 73 74 |g::atlef|t (const|
|00001910| 20 63 68 61 72 20 2a 63 | 6f 6e 74 65 78 74 29 20 | char *c|ontext) |
|00001920| 63 6f 6e 73 74 0d 7b 0d | 09 75 6e 73 69 67 6e 65 |const.{.|.unsigne|
|00001930| 64 20 6c 6f 6e 67 20 69 | 6e 74 20 70 6f 73 20 3d |d long i|nt pos =|
|00001940| 20 6c 65 66 74 70 6f 73 | 28 63 6f 6e 74 65 78 74 | leftpos|(context|
|00001950| 29 3b 0d 09 0d 09 69 66 | 20 28 70 6f 73 20 3d 3d |);....if| (pos ==|
|00001960| 20 30 29 0d 09 09 72 65 | 74 75 72 6e 20 4e 53 74 | 0)...re|turn NSt|
|00001970| 72 69 6e 67 28 29 3b 0d | 09 0d 09 72 65 74 75 72 |ring();.|...retur|
|00001980| 6e 20 28 66 72 6f 6d 28 | 70 6f 73 29 29 3b 0d 7d |n (from(|pos));.}|
|00001990| 0d 0d 2f 2f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |..//____|________|
|000019a0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000019b0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000019c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000019d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000019e0| 5f 5f 5f 5f 5f 0d 0d 4e | 53 74 72 69 6e 67 20 4e |_____..N|String N|
|000019f0| 53 74 72 69 6e 67 3a 3a | 61 74 6c 65 66 74 20 28 |String::|atleft (|
|00001a00| 63 6f 6e 73 74 20 63 68 | 61 72 20 63 6f 6e 74 65 |const ch|ar conte|
|00001a10| 78 74 29 20 63 6f 6e 73 | 74 0d 7b 0d 09 75 6e 73 |xt) cons|t.{..uns|
|00001a20| 69 67 6e 65 64 20 6c 6f | 6e 67 20 69 6e 74 20 70 |igned lo|ng int p|
|00001a30| 6f 73 20 3d 20 6c 65 66 | 74 70 6f 73 28 63 6f 6e |os = lef|tpos(con|
|00001a40| 74 65 78 74 29 3b 0d 09 | 0d 09 69 66 20 28 70 6f |text);..|..if (po|
|00001a50| 73 20 3d 3d 20 30 29 0d | 09 09 72 65 74 75 72 6e |s == 0).|..return|
|00001a60| 20 4e 53 74 72 69 6e 67 | 28 29 3b 0d 09 0d 09 72 | NString|();....r|
|00001a70| 65 74 75 72 6e 20 28 66 | 72 6f 6d 28 70 6f 73 29 |eturn (f|rom(pos)|
|00001a80| 29 3b 0d 7d 0d 0d 2f 2f | 5f 5f 5f 5f 5f 5f 5f 5f |);.}..//|________|
|00001a90| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001aa0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001ab0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001ac0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001ad0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 0d 0d 4e 53 74 72 69 |________|_..NStri|
|00001ae0| 6e 67 20 4e 53 74 72 69 | 6e 67 3a 3a 61 74 6c 65 |ng NStri|ng::atle|
|00001af0| 66 74 20 28 63 6f 6e 73 | 74 20 4e 53 74 72 69 6e |ft (cons|t NStrin|
|00001b00| 67 26 20 63 6f 6e 74 65 | 78 74 29 20 63 6f 6e 73 |g& conte|xt) cons|
|00001b10| 74 0d 7b 0d 09 75 6e 73 | 69 67 6e 65 64 20 6c 6f |t.{..uns|igned lo|
|00001b20| 6e 67 20 69 6e 74 20 70 | 6f 73 20 3d 20 6c 65 66 |ng int p|os = lef|
|00001b30| 74 70 6f 73 28 63 6f 6e | 74 65 78 74 29 3b 0d 09 |tpos(con|text);..|
|00001b40| 0d 09 69 66 20 28 70 6f | 73 20 3d 3d 20 30 29 0d |..if (po|s == 0).|
|00001b50| 09 09 72 65 74 75 72 6e | 20 4e 53 74 72 69 6e 67 |..return| NString|
|00001b60| 28 29 3b 0d 09 0d 09 72 | 65 74 75 72 6e 20 28 66 |();....r|eturn (f|
|00001b70| 72 6f 6d 28 70 6f 73 29 | 29 3b 0d 7d 0d 0d 2f 2f |rom(pos)|);.}..//|
|00001b80| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001b90| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001ba0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001bb0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001bc0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001bd0| 5f 0d 0d 4e 53 74 72 69 | 6e 67 20 4e 53 74 72 69 |_..NStri|ng NStri|
|00001be0| 6e 67 3a 3a 61 74 6c 65 | 66 74 20 28 63 6f 6e 73 |ng::atle|ft (cons|
|00001bf0| 74 20 41 6c 70 68 61 62 | 65 74 26 20 63 6f 6e 74 |t Alphab|et& cont|
|00001c00| 65 78 74 29 20 63 6f 6e | 73 74 0d 7b 0d 09 75 6e |ext) con|st.{..un|
|00001c10| 73 69 67 6e 65 64 20 6c | 6f 6e 67 20 69 6e 74 20 |signed l|ong int |
|00001c20| 70 6f 73 20 3d 20 6c 65 | 66 74 70 6f 73 28 63 6f |pos = le|ftpos(co|
|00001c30| 6e 74 65 78 74 29 3b 0d | 09 0d 09 69 66 20 28 70 |ntext);.|...if (p|
|00001c40| 6f 73 20 3d 3d 20 30 29 | 0d 09 09 72 65 74 75 72 |os == 0)|...retur|
|00001c50| 6e 20 4e 53 74 72 69 6e | 67 28 29 3b 0d 09 0d 09 |n NStrin|g();....|
|00001c60| 72 65 74 75 72 6e 20 28 | 66 72 6f 6d 28 70 6f 73 |return (|from(pos|
|00001c70| 29 29 3b 0d 7d 0d 0d 2f | 2f 5f 5f 5f 5f 5f 5f 5f |));.}../|/_______|
|00001c80| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001c90| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001ca0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001cb0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001cc0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 0d 0d 4e 53 74 72 |________|__..NStr|
|00001cd0| 69 6e 67 20 4e 53 74 72 | 69 6e 67 3a 3a 74 6f 6c |ing NStr|ing::tol|
|00001ce0| 65 66 74 20 28 63 6f 6e | 73 74 20 63 68 61 72 20 |eft (con|st char |
|00001cf0| 2a 63 6f 6e 74 65 78 74 | 29 20 63 6f 6e 73 74 0d |*context|) const.|
|00001d00| 7b 0d 09 75 6e 73 69 67 | 6e 65 64 20 6c 6f 6e 67 |{..unsig|ned long|
|00001d10| 20 69 6e 74 20 70 6f 73 | 20 3d 20 6c 65 66 74 70 | int pos| = leftp|
|00001d20| 6f 73 28 63 6f 6e 74 65 | 78 74 29 3b 0d 09 0d 09 |os(conte|xt);....|
|00001d30| 69 66 20 28 70 6f 73 20 | 3d 3d 20 30 29 0d 09 09 |if (pos |== 0)...|
|00001d40| 72 65 74 75 72 6e 20 28 | 2a 74 68 69 73 29 3b 0d |return (|*this);.|
|00001d50| 09 09 0d 09 72 65 74 75 | 72 6e 20 28 74 6f 28 70 |....retu|rn (to(p|
|00001d60| 6f 73 20 2b 20 73 74 72 | 6c 65 6e 28 63 6f 6e 74 |os + str|len(cont|
|00001d70| 65 78 74 29 20 2d 20 31 | 29 29 3b 0d 7d 0d 0d 2f |ext) - 1|));.}../|
|00001d80| 2f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |/_______|________|
|00001d90| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001da0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001db0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001dc0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001dd0| 5f 5f 0d 0d 4e 53 74 72 | 69 6e 67 20 4e 53 74 72 |__..NStr|ing NStr|
|00001de0| 69 6e 67 3a 3a 74 6f 6c | 65 66 74 20 28 63 6f 6e |ing::tol|eft (con|
|00001df0| 73 74 20 63 68 61 72 20 | 63 6f 6e 74 65 78 74 29 |st char |context)|
|00001e00| 20 63 6f 6e 73 74 0d 7b | 0d 09 75 6e 73 69 67 6e | const.{|..unsign|
|00001e10| 65 64 20 6c 6f 6e 67 20 | 69 6e 74 20 70 6f 73 20 |ed long |int pos |
|00001e20| 3d 20 6c 65 66 74 70 6f | 73 28 63 6f 6e 74 65 78 |= leftpo|s(contex|
|00001e30| 74 29 3b 0d 09 0d 09 69 | 66 20 28 70 6f 73 20 3d |t);....i|f (pos =|
|00001e40| 3d 20 30 29 0d 09 09 72 | 65 74 75 72 6e 20 28 2a |= 0)...r|eturn (*|
|00001e50| 74 68 69 73 29 3b 0d 09 | 09 0d 09 72 65 74 75 72 |this);..|...retur|
|00001e60| 6e 20 28 74 6f 28 70 6f | 73 29 29 3b 0d 7d 0d 0d |n (to(po|s));.}..|
|00001e70| 2f 2f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |//______|________|
|00001e80| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001e90| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001ea0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001eb0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001ec0| 5f 5f 5f 0d 0d 4e 53 74 | 72 69 6e 67 20 4e 53 74 |___..NSt|ring NSt|
|00001ed0| 72 69 6e 67 3a 3a 74 6f | 6c 65 66 74 20 28 63 6f |ring::to|left (co|
|00001ee0| 6e 73 74 20 4e 53 74 72 | 69 6e 67 26 20 63 6f 6e |nst NStr|ing& con|
|00001ef0| 74 65 78 74 29 20 63 6f | 6e 73 74 0d 7b 0d 09 75 |text) co|nst.{..u|
|00001f00| 6e 73 69 67 6e 65 64 20 | 6c 6f 6e 67 20 69 6e 74 |nsigned |long int|
|00001f10| 20 70 6f 73 20 3d 20 6c | 65 66 74 70 6f 73 28 63 | pos = l|eftpos(c|
|00001f20| 6f 6e 74 65 78 74 29 3b | 0d 09 0d 09 69 66 20 28 |ontext);|....if (|
|00001f30| 70 6f 73 20 3d 3d 20 30 | 29 0d 09 09 72 65 74 75 |pos == 0|)...retu|
|00001f40| 72 6e 20 28 2a 74 68 69 | 73 29 3b 0d 09 09 0d 09 |rn (*thi|s);.....|
|00001f50| 72 65 74 75 72 6e 20 28 | 74 6f 28 70 6f 73 20 2b |return (|to(pos +|
|00001f60| 20 63 6f 6e 74 65 78 74 | 2e 73 62 2d 3e 6c 65 6e | context|.sb->len|
|00001f70| 20 2d 20 31 29 29 3b 0d | 7d 0d 0d 2f 2f 5f 5f 5f | - 1));.|}..//___|
|00001f80| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001f90| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001fa0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001fb0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00001fc0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 0d 0d |________|______..|
|00001fd0| 4e 53 74 72 69 6e 67 20 | 4e 53 74 72 69 6e 67 3a |NString |NString:|
|00001fe0| 3a 74 6f 6c 65 66 74 20 | 28 63 6f 6e 73 74 20 41 |:toleft |(const A|
|00001ff0| 6c 70 68 61 62 65 74 26 | 20 63 6f 6e 74 65 78 74 |lphabet&| context|
|00002000| 29 20 63 6f 6e 73 74 0d | 7b 0d 09 75 6e 73 69 67 |) const.|{..unsig|
|00002010| 6e 65 64 20 6c 6f 6e 67 | 20 69 6e 74 20 70 6f 73 |ned long| int pos|
|00002020| 20 3d 20 6c 65 66 74 70 | 6f 73 28 63 6f 6e 74 65 | = leftp|os(conte|
|00002030| 78 74 29 3b 0d 09 0d 09 | 69 66 20 28 70 6f 73 20 |xt);....|if (pos |
|00002040| 3d 3d 20 30 29 0d 09 09 | 72 65 74 75 72 6e 20 28 |== 0)...|return (|
|00002050| 2a 74 68 69 73 29 3b 0d | 09 0d 09 72 65 74 75 72 |*this);.|...retur|
|00002060| 6e 20 28 74 6f 28 70 6f | 73 29 29 3b 09 09 09 09 |n (to(po|s));....|
|00002070| 2f 2f 20 74 68 65 20 6c | 65 6e 67 74 68 20 6f 66 |// the l|ength of|
|00002080| 20 61 6e 20 61 6c 70 68 | 61 62 65 74 2d 63 6f 6e | an alph|abet-con|
|00002090| 74 65 78 74 20 69 73 20 | 61 6c 77 61 79 73 20 31 |text is |always 1|
|000020a0| 20 6c 65 74 74 65 72 0d | 7d 0d 0d 2f 2f 5f 5f 5f | letter.|}..//___|
|000020b0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000020c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000020d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000020e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000020f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 0d 0d |________|______..|
|00002100| 4e 53 74 72 69 6e 67 20 | 4e 53 74 72 69 6e 67 3a |NString |NString:|
|00002110| 3a 6c 65 66 74 63 75 74 | 20 28 63 6f 6e 73 74 20 |:leftcut| (const |
|00002120| 63 68 61 72 20 2a 63 6f | 6e 74 65 78 74 29 20 63 |char *co|ntext) c|
|00002130| 6f 6e 73 74 0d 7b 0d 09 | 75 6e 73 69 67 6e 65 64 |onst.{..|unsigned|
|00002140| 20 6c 6f 6e 67 20 69 6e | 74 20 70 6f 73 20 3d 20 | long in|t pos = |
|00002150| 6c 65 66 74 70 6f 73 28 | 63 6f 6e 74 65 78 74 29 |leftpos(|context)|
|00002160| 3b 0d 09 0d 09 69 66 20 | 28 70 6f 73 20 3d 3d 20 |;....if |(pos == |
|00002170| 30 29 0d 09 09 72 65 74 | 75 72 6e 20 4e 53 74 72 |0)...ret|urn NStr|
|00002180| 69 6e 67 28 29 3b 0d 09 | 0d 09 72 65 74 75 72 6e |ing();..|..return|
|00002190| 20 28 66 72 6f 6d 28 70 | 6f 73 20 2b 20 73 74 72 | (from(p|os + str|
|000021a0| 6c 65 6e 28 63 6f 6e 74 | 65 78 74 29 29 29 3b 0d |len(cont|ext)));.|
|000021b0| 7d 0d 0d 2f 2f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |}..//___|________|
|000021c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000021d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000021e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000021f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002200| 5f 5f 5f 5f 5f 5f 0d 0d | 4e 53 74 72 69 6e 67 20 |______..|NString |
|00002210| 4e 53 74 72 69 6e 67 3a | 3a 6c 65 66 74 63 75 74 |NString:|:leftcut|
|00002220| 20 28 63 6f 6e 73 74 20 | 63 68 61 72 20 63 6f 6e | (const |char con|
|00002230| 74 65 78 74 29 20 63 6f | 6e 73 74 0d 7b 0d 09 75 |text) co|nst.{..u|
|00002240| 6e 73 69 67 6e 65 64 20 | 6c 6f 6e 67 20 69 6e 74 |nsigned |long int|
|00002250| 20 70 6f 73 20 3d 20 6c | 65 66 74 70 6f 73 28 63 | pos = l|eftpos(c|
|00002260| 6f 6e 74 65 78 74 29 3b | 0d 09 0d 09 69 66 20 28 |ontext);|....if (|
|00002270| 70 6f 73 20 3d 3d 20 30 | 29 0d 09 09 72 65 74 75 |pos == 0|)...retu|
|00002280| 72 6e 20 4e 53 74 72 69 | 6e 67 28 29 3b 0d 09 0d |rn NStri|ng();...|
|00002290| 09 72 65 74 75 72 6e 20 | 28 66 72 6f 6d 28 70 6f |.return |(from(po|
|000022a0| 73 20 2b 20 31 29 29 3b | 0d 7d 0d 0d 2f 2f 5f 5f |s + 1));|.}..//__|
|000022b0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000022c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000022d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000022e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000022f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 0d |________|_______.|
|00002300| 0d 4e 53 74 72 69 6e 67 | 20 4e 53 74 72 69 6e 67 |.NString| NString|
|00002310| 3a 3a 6c 65 66 74 63 75 | 74 20 28 63 6f 6e 73 74 |::leftcu|t (const|
|00002320| 20 4e 53 74 72 69 6e 67 | 26 20 63 6f 6e 74 65 78 | NString|& contex|
|00002330| 74 29 20 63 6f 6e 73 74 | 0d 7b 0d 09 75 6e 73 69 |t) const|.{..unsi|
|00002340| 67 6e 65 64 20 6c 6f 6e | 67 20 69 6e 74 20 70 6f |gned lon|g int po|
|00002350| 73 20 3d 20 6c 65 66 74 | 70 6f 73 28 63 6f 6e 74 |s = left|pos(cont|
|00002360| 65 78 74 29 3b 0d 09 0d | 09 69 66 20 28 70 6f 73 |ext);...|.if (pos|
|00002370| 20 3d 3d 20 30 29 0d 09 | 09 72 65 74 75 72 6e 20 | == 0)..|.return |
|00002380| 4e 53 74 72 69 6e 67 28 | 29 3b 0d 09 0d 09 72 65 |NString(|);....re|
|00002390| 74 75 72 6e 20 28 66 72 | 6f 6d 28 70 6f 73 20 2b |turn (fr|om(pos +|
|000023a0| 20 63 6f 6e 74 65 78 74 | 2e 73 62 2d 3e 6c 65 6e | context|.sb->len|
|000023b0| 29 29 3b 0d 7d 0d 0d 2f | 2f 5f 5f 5f 5f 5f 5f 5f |));.}../|/_______|
|000023c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000023d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000023e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000023f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002400| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 0d 0d 4e 53 74 72 |________|__..NStr|
|00002410| 69 6e 67 20 4e 53 74 72 | 69 6e 67 3a 3a 6c 65 66 |ing NStr|ing::lef|
|00002420| 74 63 75 74 20 28 63 6f | 6e 73 74 20 41 6c 70 68 |tcut (co|nst Alph|
|00002430| 61 62 65 74 26 20 63 6f | 6e 74 65 78 74 29 20 63 |abet& co|ntext) c|
|00002440| 6f 6e 73 74 0d 7b 0d 09 | 75 6e 73 69 67 6e 65 64 |onst.{..|unsigned|
|00002450| 20 6c 6f 6e 67 20 69 6e | 74 20 70 6f 73 20 3d 20 | long in|t pos = |
|00002460| 6c 65 66 74 70 6f 73 28 | 63 6f 6e 74 65 78 74 29 |leftpos(|context)|
|00002470| 3b 0d 09 0d 09 69 66 20 | 28 70 6f 73 20 3d 3d 20 |;....if |(pos == |
|00002480| 30 29 0d 09 09 72 65 74 | 75 72 6e 20 4e 53 74 72 |0)...ret|urn NStr|
|00002490| 69 6e 67 28 29 3b 0d 09 | 0d 09 72 65 74 75 72 6e |ing();..|..return|
|000024a0| 20 28 66 72 6f 6d 28 70 | 6f 73 20 2b 20 31 29 29 | (from(p|os + 1))|
|000024b0| 3b 0d 7d 0d 0d 2f 2f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |;.}..//_|________|
|000024c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000024d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000024e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000024f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002500| 5f 5f 5f 5f 5f 5f 5f 5f | 0d 0d 4e 53 74 72 69 6e |________|..NStrin|
|00002510| 67 20 4e 53 74 72 69 6e | 67 3a 3a 72 69 67 68 74 |g NStrin|g::right|
|00002520| 6f 66 20 28 63 6f 6e 73 | 74 20 63 68 61 72 20 2a |of (cons|t char *|
|00002530| 63 6f 6e 74 65 78 74 29 | 20 63 6f 6e 73 74 0d 7b |context)| const.{|
|00002540| 0d 09 75 6e 73 69 67 6e | 65 64 20 6c 6f 6e 67 20 |..unsign|ed long |
|00002550| 69 6e 74 20 70 6f 73 20 | 3d 20 72 69 67 68 74 70 |int pos |= rightp|
|00002560| 6f 73 28 63 6f 6e 74 65 | 78 74 29 3b 0d 09 0d 09 |os(conte|xt);....|
|00002570| 69 66 20 28 70 6f 73 20 | 3d 3d 20 30 29 0d 09 09 |if (pos |== 0)...|
|00002580| 72 65 74 75 72 6e 20 28 | 2a 74 68 69 73 29 3b 0d |return (|*this);.|
|00002590| 0d 09 72 65 74 75 72 6e | 20 28 66 72 6f 6d 28 70 |..return| (from(p|
|000025a0| 6f 73 20 2b 20 73 74 72 | 6c 65 6e 28 63 6f 6e 74 |os + str|len(cont|
|000025b0| 65 78 74 29 29 29 3b 0d | 7d 0d 0d 2f 2f 5f 5f 5f |ext)));.|}..//___|
|000025c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000025d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000025e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000025f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002600| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 0d 0d |________|______..|
|00002610| 4e 53 74 72 69 6e 67 20 | 4e 53 74 72 69 6e 67 3a |NString |NString:|
|00002620| 3a 72 69 67 68 74 6f 66 | 20 28 63 6f 6e 73 74 20 |:rightof| (const |
|00002630| 63 68 61 72 20 63 6f 6e | 74 65 78 74 29 20 63 6f |char con|text) co|
|00002640| 6e 73 74 0d 7b 0d 09 75 | 6e 73 69 67 6e 65 64 20 |nst.{..u|nsigned |
|00002650| 6c 6f 6e 67 20 69 6e 74 | 20 70 6f 73 20 3d 20 72 |long int| pos = r|
|00002660| 69 67 68 74 70 6f 73 28 | 63 6f 6e 74 65 78 74 29 |ightpos(|context)|
|00002670| 3b 0d 09 0d 09 69 66 20 | 28 70 6f 73 20 3d 3d 20 |;....if |(pos == |
|00002680| 30 29 0d 09 09 72 65 74 | 75 72 6e 20 28 2a 74 68 |0)...ret|urn (*th|
|00002690| 69 73 29 3b 0d 0d 09 72 | 65 74 75 72 6e 20 28 66 |is);...r|eturn (f|
|000026a0| 72 6f 6d 28 70 6f 73 20 | 2b 20 31 29 29 3b 0d 7d |rom(pos |+ 1));.}|
|000026b0| 0d 0d 2f 2f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |..//____|________|
|000026c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000026d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000026e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000026f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002700| 5f 5f 5f 5f 5f 0d 0d 4e | 53 74 72 69 6e 67 20 4e |_____..N|String N|
|00002710| 53 74 72 69 6e 67 3a 3a | 72 69 67 68 74 6f 66 20 |String::|rightof |
|00002720| 28 63 6f 6e 73 74 20 4e | 53 74 72 69 6e 67 26 20 |(const N|String& |
|00002730| 63 6f 6e 74 65 78 74 29 | 20 63 6f 6e 73 74 0d 7b |context)| const.{|
|00002740| 0d 09 75 6e 73 69 67 6e | 65 64 20 6c 6f 6e 67 20 |..unsign|ed long |
|00002750| 69 6e 74 20 70 6f 73 20 | 3d 20 72 69 67 68 74 70 |int pos |= rightp|
|00002760| 6f 73 28 63 6f 6e 74 65 | 78 74 29 3b 0d 09 0d 09 |os(conte|xt);....|
|00002770| 69 66 20 28 70 6f 73 20 | 3d 3d 20 30 29 0d 09 09 |if (pos |== 0)...|
|00002780| 72 65 74 75 72 6e 20 28 | 2a 74 68 69 73 29 3b 0d |return (|*this);.|
|00002790| 0d 09 72 65 74 75 72 6e | 20 28 66 72 6f 6d 28 70 |..return| (from(p|
|000027a0| 6f 73 20 2b 20 63 6f 6e | 74 65 78 74 2e 73 62 2d |os + con|text.sb-|
|000027b0| 3e 6c 65 6e 29 29 3b 0d | 7d 0d 0d 2f 2f 5f 5f 5f |>len));.|}..//___|
|000027c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000027d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000027e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000027f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002800| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 0d 0d |________|______..|
|00002810| 4e 53 74 72 69 6e 67 20 | 4e 53 74 72 69 6e 67 3a |NString |NString:|
|00002820| 3a 72 69 67 68 74 6f 66 | 20 28 63 6f 6e 73 74 20 |:rightof| (const |
|00002830| 41 6c 70 68 61 62 65 74 | 26 20 63 6f 6e 74 65 78 |Alphabet|& contex|
|00002840| 74 29 20 63 6f 6e 73 74 | 0d 7b 0d 09 75 6e 73 69 |t) const|.{..unsi|
|00002850| 67 6e 65 64 20 6c 6f 6e | 67 20 69 6e 74 20 70 6f |gned lon|g int po|
|00002860| 73 20 3d 20 72 69 67 68 | 74 70 6f 73 28 63 6f 6e |s = righ|tpos(con|
|00002870| 74 65 78 74 29 3b 0d 09 | 0d 09 69 66 20 28 70 6f |text);..|..if (po|
|00002880| 73 20 3d 3d 20 30 29 0d | 09 09 72 65 74 75 72 6e |s == 0).|..return|
|00002890| 20 28 2a 74 68 69 73 29 | 3b 0d 0d 09 72 65 74 75 | (*this)|;...retu|
|000028a0| 72 6e 20 28 66 72 6f 6d | 28 70 6f 73 20 2b 20 31 |rn (from|(pos + 1|
|000028b0| 29 29 3b 0d 7d 0d 0d 2f | 2f 5f 5f 5f 5f 5f 5f 5f |));.}../|/_______|
|000028c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000028d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000028e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000028f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002900| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 0d 0d 4e 53 74 72 |________|__..NStr|
|00002910| 69 6e 67 20 4e 53 74 72 | 69 6e 67 3a 3a 61 74 72 |ing NStr|ing::atr|
|00002920| 69 67 68 74 20 28 63 6f | 6e 73 74 20 63 68 61 72 |ight (co|nst char|
|00002930| 20 2a 63 6f 6e 74 65 78 | 74 29 20 63 6f 6e 73 74 | *contex|t) const|
|00002940| 0d 7b 0d 09 75 6e 73 69 | 67 6e 65 64 20 6c 6f 6e |.{..unsi|gned lon|
|00002950| 67 20 69 6e 74 20 70 6f | 73 20 3d 20 72 69 67 68 |g int po|s = righ|
|00002960| 74 70 6f 73 28 63 6f 6e | 74 65 78 74 29 3b 0d 09 |tpos(con|text);..|
|00002970| 0d 09 69 66 20 28 70 6f | 73 20 3d 3d 20 30 29 0d |..if (po|s == 0).|
|00002980| 09 09 72 65 74 75 72 6e | 20 28 2a 74 68 69 73 29 |..return| (*this)|
|00002990| 3b 0d 09 0d 09 72 65 74 | 75 72 6e 20 28 66 72 6f |;....ret|urn (fro|
|000029a0| 6d 28 70 6f 73 29 29 3b | 0d 7d 0d 0d 2f 2f 5f 5f |m(pos));|.}..//__|
|000029b0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000029c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000029d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000029e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000029f0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 0d |________|_______.|
|00002a00| 0d 4e 53 74 72 69 6e 67 | 20 4e 53 74 72 69 6e 67 |.NString| NString|
|00002a10| 3a 3a 61 74 72 69 67 68 | 74 20 28 63 6f 6e 73 74 |::atrigh|t (const|
|00002a20| 20 63 68 61 72 20 63 6f | 6e 74 65 78 74 29 20 63 | char co|ntext) c|
|00002a30| 6f 6e 73 74 0d 7b 0d 09 | 75 6e 73 69 67 6e 65 64 |onst.{..|unsigned|
|00002a40| 20 6c 6f 6e 67 20 69 6e | 74 20 70 6f 73 20 3d 20 | long in|t pos = |
|00002a50| 72 69 67 68 74 70 6f 73 | 28 63 6f 6e 74 65 78 74 |rightpos|(context|
|00002a60| 29 3b 0d 09 0d 09 69 66 | 20 28 70 6f 73 20 3d 3d |);....if| (pos ==|
|00002a70| 20 30 29 0d 09 09 72 65 | 74 75 72 6e 20 28 2a 74 | 0)...re|turn (*t|
|00002a80| 68 69 73 29 3b 0d 09 0d | 09 72 65 74 75 72 6e 20 |his);...|.return |
|00002a90| 28 66 72 6f 6d 28 70 6f | 73 29 29 3b 0d 7d 0d 0d |(from(po|s));.}..|
|00002aa0| 2f 2f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |//______|________|
|00002ab0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002ac0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002ad0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002ae0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002af0| 5f 5f 5f 0d 0d 4e 53 74 | 72 69 6e 67 20 4e 53 74 |___..NSt|ring NSt|
|00002b00| 72 69 6e 67 3a 3a 61 74 | 72 69 67 68 74 20 28 63 |ring::at|right (c|
|00002b10| 6f 6e 73 74 20 4e 53 74 | 72 69 6e 67 26 20 63 6f |onst NSt|ring& co|
|00002b20| 6e 74 65 78 74 29 20 63 | 6f 6e 73 74 0d 7b 0d 09 |ntext) c|onst.{..|
|00002b30| 75 6e 73 69 67 6e 65 64 | 20 6c 6f 6e 67 20 69 6e |unsigned| long in|
|00002b40| 74 20 70 6f 73 20 3d 20 | 72 69 67 68 74 70 6f 73 |t pos = |rightpos|
|00002b50| 28 63 6f 6e 74 65 78 74 | 29 3b 0d 09 0d 09 69 66 |(context|);....if|
|00002b60| 20 28 70 6f 73 20 3d 3d | 20 30 29 0d 09 09 72 65 | (pos ==| 0)...re|
|00002b70| 74 75 72 6e 20 28 2a 74 | 68 69 73 29 3b 0d 09 0d |turn (*t|his);...|
|00002b80| 09 72 65 74 75 72 6e 20 | 28 66 72 6f 6d 28 70 6f |.return |(from(po|
|00002b90| 73 29 29 3b 0d 7d 0d 0d | 2f 2f 5f 5f 5f 5f 5f 5f |s));.}..|//______|
|00002ba0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002bb0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002bc0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002bd0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002be0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 0d 0d 4e 53 74 |________|___..NSt|
|00002bf0| 72 69 6e 67 20 4e 53 74 | 72 69 6e 67 3a 3a 61 74 |ring NSt|ring::at|
|00002c00| 72 69 67 68 74 20 28 63 | 6f 6e 73 74 20 41 6c 70 |right (c|onst Alp|
|00002c10| 68 61 62 65 74 26 20 63 | 6f 6e 74 65 78 74 29 20 |habet& c|ontext) |
|00002c20| 63 6f 6e 73 74 0d 7b 0d | 09 75 6e 73 69 67 6e 65 |const.{.|.unsigne|
|00002c30| 64 20 6c 6f 6e 67 20 69 | 6e 74 20 70 6f 73 20 3d |d long i|nt pos =|
|00002c40| 20 72 69 67 68 74 70 6f | 73 28 63 6f 6e 74 65 78 | rightpo|s(contex|
|00002c50| 74 29 3b 0d 09 0d 09 69 | 66 20 28 70 6f 73 20 3d |t);....i|f (pos =|
|00002c60| 3d 20 30 29 0d 09 09 72 | 65 74 75 72 6e 20 28 2a |= 0)...r|eturn (*|
|00002c70| 74 68 69 73 29 3b 0d 09 | 0d 09 72 65 74 75 72 6e |this);..|..return|
|00002c80| 20 28 66 72 6f 6d 28 70 | 6f 73 29 29 3b 0d 7d 0d | (from(p|os));.}.|
|00002c90| 0d 2f 2f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |.//_____|________|
|00002ca0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002cb0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002cc0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002cd0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002ce0| 5f 5f 5f 5f 0d 0d 4e 53 | 74 72 69 6e 67 20 4e 53 |____..NS|tring NS|
|00002cf0| 74 72 69 6e 67 3a 3a 74 | 6f 72 69 67 68 74 20 28 |tring::t|oright (|
|00002d00| 63 6f 6e 73 74 20 63 68 | 61 72 20 2a 63 6f 6e 74 |const ch|ar *cont|
|00002d10| 65 78 74 29 20 63 6f 6e | 73 74 0d 7b 0d 09 75 6e |ext) con|st.{..un|
|00002d20| 73 69 67 6e 65 64 20 6c | 6f 6e 67 20 69 6e 74 20 |signed l|ong int |
|00002d30| 70 6f 73 20 3d 20 72 69 | 67 68 74 70 6f 73 28 63 |pos = ri|ghtpos(c|
|00002d40| 6f 6e 74 65 78 74 29 3b | 0d 09 0d 09 69 66 20 28 |ontext);|....if (|
|00002d50| 70 6f 73 20 3d 3d 20 30 | 29 0d 09 09 72 65 74 75 |pos == 0|)...retu|
|00002d60| 72 6e 20 4e 53 74 72 69 | 6e 67 28 29 3b 0d 09 09 |rn NStri|ng();...|
|00002d70| 0d 09 72 65 74 75 72 6e | 20 28 74 6f 28 70 6f 73 |..return| (to(pos|
|00002d80| 20 2b 20 73 74 72 6c 65 | 6e 28 63 6f 6e 74 65 78 | + strle|n(contex|
|00002d90| 74 29 20 2d 20 31 29 29 | 3b 0d 7d 0d 0d 2f 2f 5f |t) - 1))|;.}..//_|
|00002da0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002db0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002dc0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002dd0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002de0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002df0| 0d 0d 4e 53 74 72 69 6e | 67 20 4e 53 74 72 69 6e |..NStrin|g NStrin|
|00002e00| 67 3a 3a 74 6f 72 69 67 | 68 74 20 28 63 6f 6e 73 |g::torig|ht (cons|
|00002e10| 74 20 63 68 61 72 20 63 | 6f 6e 74 65 78 74 29 20 |t char c|ontext) |
|00002e20| 63 6f 6e 73 74 0d 7b 0d | 09 75 6e 73 69 67 6e 65 |const.{.|.unsigne|
|00002e30| 64 20 6c 6f 6e 67 20 69 | 6e 74 20 70 6f 73 20 3d |d long i|nt pos =|
|00002e40| 20 72 69 67 68 74 70 6f | 73 28 63 6f 6e 74 65 78 | rightpo|s(contex|
|00002e50| 74 29 3b 0d 09 0d 09 69 | 66 20 28 70 6f 73 20 3d |t);....i|f (pos =|
|00002e60| 3d 20 30 29 0d 09 09 72 | 65 74 75 72 6e 20 4e 53 |= 0)...r|eturn NS|
|00002e70| 74 72 69 6e 67 28 29 3b | 0d 09 09 0d 09 72 65 74 |tring();|.....ret|
|00002e80| 75 72 6e 20 28 74 6f 28 | 70 6f 73 29 29 3b 0d 7d |urn (to(|pos));.}|
|00002e90| 0d 0d 2f 2f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |..//____|________|
|00002ea0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002eb0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002ec0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002ed0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002ee0| 5f 5f 5f 5f 5f 0d 0d 4e | 53 74 72 69 6e 67 20 4e |_____..N|String N|
|00002ef0| 53 74 72 69 6e 67 3a 3a | 74 6f 72 69 67 68 74 20 |String::|toright |
|00002f00| 28 63 6f 6e 73 74 20 4e | 53 74 72 69 6e 67 26 20 |(const N|String& |
|00002f10| 63 6f 6e 74 65 78 74 29 | 20 63 6f 6e 73 74 0d 7b |context)| const.{|
|00002f20| 0d 09 75 6e 73 69 67 6e | 65 64 20 6c 6f 6e 67 20 |..unsign|ed long |
|00002f30| 69 6e 74 20 70 6f 73 20 | 3d 20 72 69 67 68 74 70 |int pos |= rightp|
|00002f40| 6f 73 28 63 6f 6e 74 65 | 78 74 29 3b 0d 09 0d 09 |os(conte|xt);....|
|00002f50| 69 66 20 28 70 6f 73 20 | 3d 3d 20 30 29 0d 09 09 |if (pos |== 0)...|
|00002f60| 72 65 74 75 72 6e 20 4e | 53 74 72 69 6e 67 28 29 |return N|String()|
|00002f70| 3b 0d 09 09 0d 09 72 65 | 74 75 72 6e 20 28 74 6f |;.....re|turn (to|
|00002f80| 28 70 6f 73 20 2b 20 63 | 6f 6e 74 65 78 74 2e 73 |(pos + c|ontext.s|
|00002f90| 62 2d 3e 6c 65 6e 20 2d | 20 31 29 29 3b 0d 7d 0d |b->len -| 1));.}.|
|00002fa0| 0d 2f 2f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |.//_____|________|
|00002fb0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002fc0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002fd0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002fe0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00002ff0| 5f 5f 5f 5f 0d 0d 4e 53 | 74 72 69 6e 67 20 4e 53 |____..NS|tring NS|
|00003000| 74 72 69 6e 67 3a 3a 74 | 6f 72 69 67 68 74 20 28 |tring::t|oright (|
|00003010| 63 6f 6e 73 74 20 41 6c | 70 68 61 62 65 74 26 20 |const Al|phabet& |
|00003020| 63 6f 6e 74 65 78 74 29 | 20 63 6f 6e 73 74 0d 7b |context)| const.{|
|00003030| 0d 09 75 6e 73 69 67 6e | 65 64 20 6c 6f 6e 67 20 |..unsign|ed long |
|00003040| 69 6e 74 20 70 6f 73 20 | 3d 20 72 69 67 68 74 70 |int pos |= rightp|
|00003050| 6f 73 28 63 6f 6e 74 65 | 78 74 29 3b 0d 09 0d 09 |os(conte|xt);....|
|00003060| 69 66 20 28 70 6f 73 20 | 3d 3d 20 30 29 0d 09 09 |if (pos |== 0)...|
|00003070| 72 65 74 75 72 6e 20 4e | 53 74 72 69 6e 67 28 29 |return N|String()|
|00003080| 3b 0d 09 09 0d 09 72 65 | 74 75 72 6e 20 28 74 6f |;.....re|turn (to|
|00003090| 28 70 6f 73 29 29 3b 0d | 7d 0d 0d 2f 2f 5f 5f 5f |(pos));.|}..//___|
|000030a0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000030b0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000030c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000030d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000030e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 0d 0d |________|______..|
|000030f0| 4e 53 74 72 69 6e 67 20 | 4e 53 74 72 69 6e 67 3a |NString |NString:|
|00003100| 3a 72 69 67 68 74 63 75 | 74 20 28 63 6f 6e 73 74 |:rightcu|t (const|
|00003110| 20 63 68 61 72 20 2a 63 | 6f 6e 74 65 78 74 29 20 | char *c|ontext) |
|00003120| 63 6f 6e 73 74 0d 7b 0d | 09 75 6e 73 69 67 6e 65 |const.{.|.unsigne|
|00003130| 64 20 6c 6f 6e 67 20 69 | 6e 74 20 70 6f 73 20 3d |d long i|nt pos =|
|00003140| 20 72 69 67 68 74 70 6f | 73 28 63 6f 6e 74 65 78 | rightpo|s(contex|
|00003150| 74 29 3b 0d 09 0d 09 69 | 66 20 28 70 6f 73 20 3d |t);....i|f (pos =|
|00003160| 3d 20 30 29 0d 09 09 72 | 65 74 75 72 6e 20 4e 53 |= 0)...r|eturn NS|
|00003170| 74 72 69 6e 67 28 29 3b | 0d 09 0d 09 72 65 74 75 |tring();|....retu|
|00003180| 72 6e 20 28 74 6f 28 70 | 6f 73 20 2d 31 29 29 3b |rn (to(p|os -1));|
|00003190| 0d 7d 0d 0d 2f 2f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |.}..//__|________|
|000031a0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000031b0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000031c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000031d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000031e0| 5f 5f 5f 5f 5f 5f 5f 0d | 0d 4e 53 74 72 69 6e 67 |_______.|.NString|
|000031f0| 20 4e 53 74 72 69 6e 67 | 3a 3a 72 69 67 68 74 63 | NString|::rightc|
|00003200| 75 74 20 28 63 6f 6e 73 | 74 20 63 68 61 72 20 63 |ut (cons|t char c|
|00003210| 6f 6e 74 65 78 74 29 20 | 63 6f 6e 73 74 0d 7b 0d |ontext) |const.{.|
|00003220| 09 75 6e 73 69 67 6e 65 | 64 20 6c 6f 6e 67 20 69 |.unsigne|d long i|
|00003230| 6e 74 20 70 6f 73 20 3d | 20 72 69 67 68 74 70 6f |nt pos =| rightpo|
|00003240| 73 28 63 6f 6e 74 65 78 | 74 29 3b 0d 09 0d 09 69 |s(contex|t);....i|
|00003250| 66 20 28 70 6f 73 20 3d | 3d 20 30 29 0d 09 09 72 |f (pos =|= 0)...r|
|00003260| 65 74 75 72 6e 20 4e 53 | 74 72 69 6e 67 28 29 3b |eturn NS|tring();|
|00003270| 0d 09 0d 09 72 65 74 75 | 72 6e 20 28 74 6f 28 70 |....retu|rn (to(p|
|00003280| 6f 73 20 2d 31 29 29 3b | 0d 7d 0d 0d 2f 2f 5f 5f |os -1));|.}..//__|
|00003290| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000032a0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000032b0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000032c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000032d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 0d |________|_______.|
|000032e0| 0d 4e 53 74 72 69 6e 67 | 20 4e 53 74 72 69 6e 67 |.NString| NString|
|000032f0| 3a 3a 72 69 67 68 74 63 | 75 74 20 28 63 6f 6e 73 |::rightc|ut (cons|
|00003300| 74 20 4e 53 74 72 69 6e | 67 26 20 63 6f 6e 74 65 |t NStrin|g& conte|
|00003310| 78 74 29 20 63 6f 6e 73 | 74 0d 7b 0d 09 75 6e 73 |xt) cons|t.{..uns|
|00003320| 69 67 6e 65 64 20 6c 6f | 6e 67 20 69 6e 74 20 70 |igned lo|ng int p|
|00003330| 6f 73 20 3d 20 72 69 67 | 68 74 70 6f 73 28 63 6f |os = rig|htpos(co|
|00003340| 6e 74 65 78 74 29 3b 0d | 09 0d 09 69 66 20 28 70 |ntext);.|...if (p|
|00003350| 6f 73 20 3d 3d 20 30 29 | 0d 09 09 72 65 74 75 72 |os == 0)|...retur|
|00003360| 6e 20 4e 53 74 72 69 6e | 67 28 29 3b 0d 09 0d 09 |n NStrin|g();....|
|00003370| 72 65 74 75 72 6e 20 28 | 74 6f 28 70 6f 73 20 2d |return (|to(pos -|
|00003380| 31 29 29 3b 0d 7d 0d 0d | 2f 2f 5f 5f 5f 5f 5f 5f |1));.}..|//______|
|00003390| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000033a0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000033b0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000033c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000033d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 0d 0d 4e 53 74 |________|___..NSt|
|000033e0| 72 69 6e 67 20 4e 53 74 | 72 69 6e 67 3a 3a 72 69 |ring NSt|ring::ri|
|000033f0| 67 68 74 63 75 74 20 28 | 63 6f 6e 73 74 20 41 6c |ghtcut (|const Al|
|00003400| 70 68 61 62 65 74 26 20 | 63 6f 6e 74 65 78 74 29 |phabet& |context)|
|00003410| 20 63 6f 6e 73 74 0d 7b | 0d 09 75 6e 73 69 67 6e | const.{|..unsign|
|00003420| 65 64 20 6c 6f 6e 67 20 | 69 6e 74 20 70 6f 73 20 |ed long |int pos |
|00003430| 3d 20 72 69 67 68 74 70 | 6f 73 28 63 6f 6e 74 65 |= rightp|os(conte|
|00003440| 78 74 29 3b 0d 09 0d 09 | 69 66 20 28 70 6f 73 20 |xt);....|if (pos |
|00003450| 3d 3d 20 30 29 0d 09 09 | 72 65 74 75 72 6e 20 4e |== 0)...|return N|
|00003460| 53 74 72 69 6e 67 28 29 | 3b 0d 09 0d 09 72 65 74 |String()|;....ret|
|00003470| 75 72 6e 20 28 74 6f 28 | 70 6f 73 20 2d 31 29 29 |urn (to(|pos -1))|
|00003480| 3b 0d 7d 0d 0d 2f 2f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |;.}..//_|________|
|00003490| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000034a0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000034b0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000034c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000034d0| 5f 5f 5f 5f 5f 5f 5f 5f | 0d 0d 69 6e 74 20 4e 53 |________|..int NS|
|000034e0| 74 72 69 6e 67 3a 3a 65 | 6e 64 73 77 69 74 68 28 |tring::e|ndswith(|
|000034f0| 63 6f 6e 73 74 20 63 68 | 61 72 20 2a 63 6f 6e 74 |const ch|ar *cont|
|00003500| 65 78 74 29 20 63 6f 6e | 73 74 0d 7b 0d 09 75 6e |ext) con|st.{..un|
|00003510| 73 69 67 6e 65 64 20 6c | 6f 6e 67 20 69 6e 74 20 |signed l|ong int |
|00003520| 63 74 78 5f 6c 65 6e 20 | 3d 20 73 74 72 6c 65 6e |ctx_len |= strlen|
|00003530| 28 63 6f 6e 74 65 78 74 | 29 3b 0d 09 0d 09 69 66 |(context|);....if|
|00003540| 20 28 63 74 78 5f 6c 65 | 6e 20 3d 3d 20 30 29 0d | (ctx_le|n == 0).|
|00003550| 09 09 72 65 74 75 72 6e | 20 28 31 29 3b 09 09 09 |..return| (1);...|
|00003560| 09 09 09 09 09 09 09 09 | 09 09 09 09 09 09 09 2f |........|......./|
|00003570| 2f 20 61 6e 20 65 6d 70 | 74 79 20 73 75 62 73 74 |/ an emp|ty subst|
|00003580| 72 69 6e 67 20 63 61 6e | 20 62 65 20 66 6f 75 6e |ring can| be foun|
|00003590| 64 20 65 76 65 72 79 77 | 68 65 72 65 0d 09 69 66 |d everyw|here..if|
|000035a0| 20 28 63 74 78 5f 6c 65 | 6e 20 3e 20 73 62 2d 3e | (ctx_le|n > sb->|
|000035b0| 6c 65 6e 29 0d 09 09 72 | 65 74 75 72 6e 20 28 30 |len)...r|eturn (0|
|000035c0| 29 3b 09 09 09 09 09 09 | 09 09 09 09 09 09 09 09 |);......|........|
|000035d0| 09 09 09 09 2f 2f 20 63 | 6f 6e 74 65 78 74 20 6c |....// c|ontext l|
|000035e0| 6f 6e 67 65 72 20 74 68 | 61 6e 20 65 6e 74 69 72 |onger th|an entir|
|000035f0| 65 20 4e 53 74 72 69 6e | 67 0d 09 72 65 74 75 72 |e NStrin|g..retur|
|00003600| 6e 20 28 28 73 74 72 6e | 63 6d 70 28 73 62 2d 3e |n ((strn|cmp(sb->|
|00003610| 73 74 72 20 2b 20 28 73 | 62 2d 3e 6c 65 6e 20 2d |str + (s|b->len -|
|00003620| 20 63 74 78 5f 6c 65 6e | 29 2c 20 63 6f 6e 74 65 | ctx_len|), conte|
|00003630| 78 74 2c 20 63 74 78 5f | 6c 65 6e 29 29 20 3f 20 |xt, ctx_|len)) ? |
|00003640| 30 20 3a 20 31 29 3b 0d | 7d 0d 0d 2f 2f 5f 5f 5f |0 : 1);.|}..//___|
|00003650| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003660| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003670| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003680| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003690| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 0d 0d |________|______..|
|000036a0| 4e 53 74 72 69 6e 67 20 | 73 70 61 6e 20 28 63 6f |NString |span (co|
|000036b0| 6e 73 74 20 63 68 61 72 | 20 63 6f 6e 74 65 78 74 |nst char| context|
|000036c0| 2c 20 63 6f 6e 73 74 20 | 4e 53 74 72 69 6e 67 26 |, const |NString&|
|000036d0| 20 73 29 0d 7b 0d 09 63 | 68 61 72 20 2a 63 74 78 | s).{..c|har *ctx|
|000036e0| 20 3d 20 22 78 22 3b 0d | 09 0d 09 63 74 78 5b 30 | = "x";.|...ctx[0|
|000036f0| 5d 20 3d 20 63 6f 6e 74 | 65 78 74 3b 0d 09 72 65 |] = cont|ext;..re|
|00003700| 74 75 72 6e 20 28 73 2e | 74 6f 28 73 74 72 73 70 |turn (s.|to(strsp|
|00003710| 6e 28 73 2e 73 62 2d 3e | 73 74 72 2c 20 63 74 78 |n(s.sb->|str, ctx|
|00003720| 29 29 29 3b 0d 7d 0d 0d | 2f 2f 5f 5f 5f 5f 5f 5f |)));.}..|//______|
|00003730| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003740| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003750| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003760| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003770| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 0d 0d 4e 53 74 |________|___..NSt|
|00003780| 72 69 6e 67 20 73 70 61 | 6e 20 28 63 6f 6e 73 74 |ring spa|n (const|
|00003790| 20 41 6c 70 68 61 62 65 | 74 26 20 63 6f 6e 74 65 | Alphabe|t& conte|
|000037a0| 78 74 2c 20 63 6f 6e 73 | 74 20 4e 53 74 72 69 6e |xt, cons|t NStrin|
|000037b0| 67 26 20 73 29 0d 7b 0d | 09 75 6e 73 69 67 6e 65 |g& s).{.|.unsigne|
|000037c0| 64 20 6c 6f 6e 67 20 69 | 6e 74 20 69 3b 0d 09 0d |d long i|nt i;...|
|000037d0| 09 66 6f 72 20 28 69 20 | 3d 20 30 3b 20 28 69 20 |.for (i |= 0; (i |
|000037e0| 3c 20 73 2e 73 62 2d 3e | 6c 65 6e 29 20 26 26 20 |< s.sb->|len) && |
|000037f0| 28 63 6f 6e 74 65 78 74 | 2e 63 6f 6e 74 61 69 6e |(context|.contain|
|00003800| 73 28 73 2e 73 62 2d 3e | 73 74 72 5b 69 5d 29 29 |s(s.sb->|str[i]))|
|00003810| 3b 20 69 2b 2b 29 3b 0d | 09 72 65 74 75 72 6e 20 |; i++);.|.return |
|00003820| 28 73 2e 74 6f 28 69 29 | 29 3b 0d 7d 0d 0d 2f 2f |(s.to(i)|);.}..//|
|00003830| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003840| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003850| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003860| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003870| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003880| 5f 0d 0d 4e 53 74 72 69 | 6e 67 20 73 70 61 6e 20 |_..NStri|ng span |
|00003890| 28 63 6f 6e 73 74 20 4e | 53 74 72 69 6e 67 26 20 |(const N|String& |
|000038a0| 73 2c 20 63 6f 6e 73 74 | 20 63 68 61 72 20 63 6f |s, const| char co|
|000038b0| 6e 74 65 78 74 29 0d 7b | 0d 09 75 6e 73 69 67 6e |ntext).{|..unsign|
|000038c0| 65 64 20 6c 6f 6e 67 20 | 69 6e 74 20 69 2c 20 70 |ed long |int i, p|
|000038d0| 6f 73 20 3d 20 30 3b 0d | 09 0d 09 69 66 20 28 73 |os = 0;.|...if (s|
|000038e0| 2e 73 62 2d 3e 6c 65 6e | 20 3d 3d 20 30 29 0d 09 |.sb->len| == 0)..|
|000038f0| 09 72 65 74 75 72 6e 20 | 28 73 29 3b 09 09 09 09 |.return |(s);....|
|00003900| 09 09 09 09 09 09 09 09 | 09 09 09 09 09 09 2f 2f |........|......//|
|00003910| 20 6e 6f 20 63 68 61 72 | 61 63 74 65 72 20 63 61 | no char|acter ca|
|00003920| 6e 20 62 65 20 66 6f 75 | 6e 64 20 69 6e 20 61 6e |n be fou|nd in an|
|00003930| 20 65 6d 70 74 79 20 73 | 74 72 69 6e 67 0d 09 09 | empty s|tring...|
|00003940| 0d 09 66 6f 72 20 28 69 | 3d 73 2e 73 62 2d 3e 6c |..for (i|=s.sb->l|
|00003950| 65 6e 3b 20 28 69 20 3e | 20 30 29 20 26 26 20 28 |en; (i >| 0) && (|
|00003960| 70 6f 73 20 3d 3d 20 30 | 29 3b 20 69 2d 2d 29 09 |pos == 0|); i--).|
|00003970| 09 09 09 09 09 09 2f 2f | 20 4e 6f 74 65 3a 20 28 |......//| Note: (|
|00003980| 69 20 3e 3d 20 30 29 20 | 69 73 20 61 6c 77 61 79 |i >= 0) |is alway|
|00003990| 73 20 54 52 55 45 20 66 | 6f 72 20 75 6e 73 69 67 |s TRUE f|or unsig|
|000039a0| 6e 65 64 20 69 6e 74 2c | 0d 09 09 69 66 20 28 73 |ned int,|...if (s|
|000039b0| 2e 73 62 2d 3e 73 74 72 | 5b 69 2d 31 5d 20 21 3d |.sb->str|[i-1] !=|
|000039c0| 20 63 6f 6e 74 65 78 74 | 29 09 09 09 09 09 09 09 | context|).......|
|000039d0| 09 09 09 09 09 2f 2f 09 | 09 73 6f 20 74 68 65 20 |.....//.|.so the |
|000039e0| 72 61 6e 67 65 20 66 6f | 72 20 69 20 68 61 73 20 |range fo|r i has |
|000039f0| 62 65 65 6e 20 6f 66 66 | 73 65 74 20 62 79 20 2b |been off|set by +|
|00003a00| 31 0d 09 09 09 70 6f 73 | 20 3d 20 69 3b 0d 09 09 |1....pos| = i;...|
|00003a10| 09 0d 09 72 65 74 75 72 | 6e 20 28 73 2e 66 72 6f |...retur|n (s.fro|
|00003a20| 6d 28 70 6f 73 2b 31 29 | 29 3b 0d 7d 0d 0d 2f 2f |m(pos+1)|);.}..//|
|00003a30| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003a40| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003a50| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003a60| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003a70| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003a80| 5f 0d 0d 4e 53 74 72 69 | 6e 67 20 73 70 61 6e 20 |_..NStri|ng span |
|00003a90| 28 63 6f 6e 73 74 20 4e | 53 74 72 69 6e 67 26 20 |(const N|String& |
|00003aa0| 73 2c 20 63 6f 6e 73 74 | 20 41 6c 70 68 61 62 65 |s, const| Alphabe|
|00003ab0| 74 26 20 63 6f 6e 74 65 | 78 74 29 0d 7b 0d 09 75 |t& conte|xt).{..u|
|00003ac0| 6e 73 69 67 6e 65 64 20 | 6c 6f 6e 67 20 69 6e 74 |nsigned |long int|
|00003ad0| 20 69 2c 20 70 6f 73 20 | 3d 20 30 3b 0d 09 0d 09 | i, pos |= 0;....|
|00003ae0| 69 66 20 28 73 2e 73 62 | 2d 3e 6c 65 6e 20 3d 3d |if (s.sb|->len ==|
|00003af0| 20 30 29 0d 09 09 72 65 | 74 75 72 6e 20 28 73 29 | 0)...re|turn (s)|
|00003b00| 3b 09 09 09 09 09 09 09 | 09 09 09 09 09 09 09 09 |;.......|........|
|00003b10| 09 09 09 2f 2f 20 6e 6f | 20 63 68 61 72 61 63 74 |...// no| charact|
|00003b20| 65 72 20 63 61 6e 20 62 | 65 20 66 6f 75 6e 64 20 |er can b|e found |
|00003b30| 69 6e 20 61 6e 20 65 6d | 70 74 79 20 73 74 72 69 |in an em|pty stri|
|00003b40| 6e 67 0d 09 09 0d 09 66 | 6f 72 20 28 69 3d 73 2e |ng.....f|or (i=s.|
|00003b50| 73 62 2d 3e 6c 65 6e 3b | 20 28 69 20 3e 20 30 29 |sb->len;| (i > 0)|
|00003b60| 20 26 26 20 28 70 6f 73 | 20 3d 3d 20 30 29 3b 20 | && (pos| == 0); |
|00003b70| 69 2d 2d 29 09 09 09 09 | 09 09 09 2f 2f 20 4e 6f |i--)....|...// No|
|00003b80| 74 65 3a 20 28 69 20 3e | 3d 20 30 29 20 69 73 20 |te: (i >|= 0) is |
|00003b90| 61 6c 77 61 79 73 20 54 | 52 55 45 20 66 6f 72 20 |always T|RUE for |
|00003ba0| 75 6e 73 69 67 6e 65 64 | 20 69 6e 74 2c 0d 09 09 |unsigned| int,...|
|00003bb0| 69 66 20 28 21 20 63 6f | 6e 74 65 78 74 2e 63 6f |if (! co|ntext.co|
|00003bc0| 6e 74 61 69 6e 73 28 73 | 2e 73 62 2d 3e 73 74 72 |ntains(s|.sb->str|
|00003bd0| 5b 69 2d 31 5d 29 29 09 | 09 09 09 09 09 09 09 09 |[i-1])).|........|
|00003be0| 2f 2f 09 09 73 6f 20 74 | 68 65 20 72 61 6e 67 65 |//..so t|he range|
|00003bf0| 20 66 6f 72 20 69 20 68 | 61 73 20 62 65 65 6e 20 | for i h|as been |
|00003c00| 6f 66 66 73 65 74 20 62 | 79 20 2b 31 0d 09 09 09 |offset b|y +1....|
|00003c10| 70 6f 73 20 3d 20 69 3b | 0d 09 09 09 0d 09 72 65 |pos = i;|......re|
|00003c20| 74 75 72 6e 20 28 73 2e | 66 72 6f 6d 28 70 6f 73 |turn (s.|from(pos|
|00003c30| 2b 31 29 29 3b 0d 7d 0d | 0d 2f 2f 5f 5f 5f 5f 5f |+1));.}.|.//_____|
|00003c40| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003c50| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003c60| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003c70| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003c80| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 0d 0d 4e 53 |________|____..NS|
|00003c90| 74 72 69 6e 67 20 6f 70 | 65 72 61 74 6f 72 2d 20 |tring op|erator- |
|00003ca0| 28 63 6f 6e 73 74 20 63 | 68 61 72 20 63 2c 20 63 |(const c|har c, c|
|00003cb0| 6f 6e 73 74 20 4e 53 74 | 72 69 6e 67 26 20 73 29 |onst NSt|ring& s)|
|00003cc0| 0d 7b 0d 09 63 68 61 72 | 20 2a 63 74 78 20 3d 20 |.{..char| *ctx = |
|00003cd0| 22 78 22 3b 0d 09 0d 09 | 63 74 78 5b 30 5d 20 3d |"x";....|ctx[0] =|
|00003ce0| 20 63 3b 0d 09 72 65 74 | 75 72 6e 20 28 73 2e 66 | c;..ret|urn (s.f|
|00003cf0| 72 6f 6d 28 73 74 72 73 | 70 6e 28 73 2e 73 62 2d |rom(strs|pn(s.sb-|
|00003d00| 3e 73 74 72 2c 20 63 74 | 78 29 2b 31 29 29 3b 0d |>str, ct|x)+1));.|
|00003d10| 7d 0d 0d 2f 2f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |}..//___|________|
|00003d20| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003d30| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003d40| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003d50| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003d60| 5f 5f 5f 5f 5f 5f 0d 0d | 4e 53 74 72 69 6e 67 20 |______..|NString |
|00003d70| 6f 70 65 72 61 74 6f 72 | 2d 20 28 63 6f 6e 73 74 |operator|- (const|
|00003d80| 20 41 6c 70 68 61 62 65 | 74 26 20 63 74 78 2c 20 | Alphabe|t& ctx, |
|00003d90| 63 6f 6e 73 74 20 4e 53 | 74 72 69 6e 67 26 20 73 |const NS|tring& s|
|00003da0| 29 0d 7b 0d 09 75 6e 73 | 69 67 6e 65 64 20 6c 6f |).{..uns|igned lo|
|00003db0| 6e 67 20 69 6e 74 20 69 | 3b 0d 09 0d 09 66 6f 72 |ng int i|;....for|
|00003dc0| 20 28 69 3d 30 3b 20 28 | 69 20 3c 20 73 2e 73 62 | (i=0; (|i < s.sb|
|00003dd0| 2d 3e 6c 65 6e 29 20 26 | 26 20 28 63 74 78 2e 63 |->len) &|& (ctx.c|
|00003de0| 6f 6e 74 61 69 6e 73 28 | 73 2e 73 62 2d 3e 73 74 |ontains(|s.sb->st|
|00003df0| 72 5b 69 5d 29 29 3b 20 | 69 2b 2b 29 3b 0d 09 72 |r[i])); |i++);..r|
|00003e00| 65 74 75 72 6e 20 28 73 | 2e 66 72 6f 6d 28 69 2b |eturn (s|.from(i+|
|00003e10| 31 29 29 3b 0d 7d 0d 0d | 2f 2f 5f 5f 5f 5f 5f 5f |1));.}..|//______|
|00003e20| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003e30| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003e40| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003e50| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00003e60| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 0d 0d 4e 53 74 |________|___..NSt|
|00003e70| 72 69 6e 67 20 4e 53 74 | 72 69 6e 67 3a 3a 6f 70 |ring NSt|ring::op|
|00003e80| 65 72 61 74 6f 72 2d 20 | 28 63 6f 6e 73 74 20 63 |erator- |(const c|
|00003e90| 68 61 72 20 63 29 20 63 | 6f 6e 73 74 0d 7b 0d 09 |har c) c|onst.{..|
|00003ea0| 75 6e 73 69 67 6e 65 64 | 20 6c 6f 6e 67 20 69 6e |unsigned| long in|
|00003eb0| 74 20 69 2c 20 70 6f 73 | 20 3d 20 30 3b 0d 09 0d |t i, pos| = 0;...|
|00003ec0| 09 69 66 20 28 73 62 2d | 3e 6c 65 6e 20 3d 3d 20 |.if (sb-|>len == |
|00003ed0| 30 29 0d 09 09 72 65 74 | 75 72 6e 20 28 2a 74 68 |0)...ret|urn (*th|
|00003ee0| 69 73 29 3b 09 09 09 09 | 09 09 09 09 09 09 09 09 |is);....|........|
|00003ef0| 09 09 09 09 09 09 2f 2f | 20 6e 6f 20 63 68 61 72 |......//| no char|
|00003f00| 61 63 74 65 72 20 63 61 | 6e 20 62 65 20 66 6f 75 |acter ca|n be fou|
|00003f10| 6e 64 20 69 6e 20 61 6e | 20 65 6d 70 74 79 20 73 |nd in an| empty s|
|00003f20| 74 72 69 6e 67 0d 09 09 | 0d 09 66 6f 72 20 28 69 |tring...|..for (i|
|00003f30| 3d 73 62 2d 3e 6c 65 6e | 3b 20 28 69 20 3e 20 30 |=sb->len|; (i > 0|
|00003f40| 29 20 26 26 20 28 70 6f | 73 20 3d 3d 20 30 29 3b |) && (po|s == 0);|
|00003f50| 20 69 2d 2d 29 09 09 09 | 09 09 09 09 09 09 2f 2f | i--)...|......//|
|00003f60| 20 4e 6f 74 65 3a 20 28 | 69 20 3e 3d 20 30 29 20 | Note: (|i >= 0) |
|00003f70| 69 73 20 61 6c 77 61 79 | 73 20 54 52 55 45 20 66 |is alway|s TRUE f|
|00003f80| 6f 72 20 75 6e 73 69 67 | 6e 65 64 20 69 6e 74 2c |or unsig|ned int,|
|00003f90| 0d 09 09 69 66 20 28 73 | 62 2d 3e 73 74 72 5b 69 |...if (s|b->str[i|
|00003fa0| 2d 31 5d 20 21 3d 20 63 | 29 09 09 09 09 09 09 09 |-1] != c|).......|
|00003fb0| 09 09 09 09 09 09 09 09 | 09 2f 2f 09 09 73 6f 20 |........|.//..so |
|00003fc0| 74 68 65 20 72 61 6e 67 | 65 20 66 6f 72 20 69 20 |the rang|e for i |
|00003fd0| 68 61 73 20 62 65 65 6e | 20 6f 66 66 73 65 74 20 |has been| offset |
|00003fe0| 62 79 20 2b 31 0d 09 09 | 09 70 6f 73 20 3d 20 69 |by +1...|.pos = i|
|00003ff0| 3b 0d 09 09 09 0d 09 72 | 65 74 75 72 6e 20 28 74 |;......r|eturn (t|
|00004000| 6f 28 70 6f 73 29 29 3b | 0d 7d 0d 0d 2f 2f 5f 5f |o(pos));|.}..//__|
|00004010| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00004020| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00004030| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00004040| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00004050| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 0d |________|_______.|
|00004060| 0d 4e 53 74 72 69 6e 67 | 20 4e 53 74 72 69 6e 67 |.NString| NString|
|00004070| 3a 3a 6f 70 65 72 61 74 | 6f 72 2d 20 28 63 6f 6e |::operat|or- (con|
|00004080| 73 74 20 41 6c 70 68 61 | 62 65 74 26 20 63 74 78 |st Alpha|bet& ctx|
|00004090| 29 20 63 6f 6e 73 74 0d | 7b 0d 09 75 6e 73 69 67 |) const.|{..unsig|
|000040a0| 6e 65 64 20 6c 6f 6e 67 | 20 69 6e 74 20 69 2c 20 |ned long| int i, |
|000040b0| 70 6f 73 20 3d 20 30 3b | 0d 09 0d 09 69 66 20 28 |pos = 0;|....if (|
|000040c0| 73 62 2d 3e 6c 65 6e 20 | 3d 3d 20 30 29 0d 09 09 |sb->len |== 0)...|
|000040d0| 72 65 74 75 72 6e 20 28 | 2a 74 68 69 73 29 3b 09 |return (|*this);.|
|000040e0| 09 09 09 09 09 09 09 09 | 09 09 09 09 09 09 09 09 |........|........|
|000040f0| 09 2f 2f 20 6e 6f 20 63 | 68 61 72 61 63 74 65 72 |.// no c|haracter|
|00004100| 20 63 61 6e 20 62 65 20 | 66 6f 75 6e 64 20 69 6e | can be |found in|
|00004110| 20 61 6e 20 65 6d 70 74 | 79 20 73 74 72 69 6e 67 | an empt|y string|
|00004120| 0d 09 09 0d 09 66 6f 72 | 20 28 69 3d 73 62 2d 3e |.....for| (i=sb->|
|00004130| 6c 65 6e 3b 20 28 69 20 | 3e 20 30 29 20 26 26 20 |len; (i |> 0) && |
|00004140| 28 70 6f 73 20 3d 3d 20 | 30 29 3b 20 69 2d 2d 29 |(pos == |0); i--)|
|00004150| 09 09 09 09 09 09 09 09 | 09 2f 2f 20 4e 6f 74 65 |........|.// Note|
|00004160| 3a 20 28 69 20 3e 3d 20 | 30 29 20 69 73 20 61 6c |: (i >= |0) is al|
|00004170| 77 61 79 73 20 54 52 55 | 45 20 66 6f 72 20 75 6e |ways TRU|E for un|
|00004180| 73 69 67 6e 65 64 20 69 | 6e 74 2c 0d 09 09 69 66 |signed i|nt,...if|
|00004190| 20 28 21 20 63 74 78 2e | 63 6f 6e 74 61 69 6e 73 | (! ctx.|contains|
|000041a0| 28 73 62 2d 3e 73 74 72 | 5b 69 2d 31 5d 29 29 09 |(sb->str|[i-1])).|
|000041b0| 09 09 09 09 09 09 09 09 | 09 09 09 2f 2f 09 09 73 |........|...//..s|
|000041c0| 6f 20 74 68 65 20 72 61 | 6e 67 65 20 66 6f 72 20 |o the ra|nge for |
|000041d0| 69 20 68 61 73 20 62 65 | 65 6e 20 6f 66 66 73 65 |i has be|en offse|
|000041e0| 74 20 62 79 20 2b 31 0d | 09 09 09 70 6f 73 20 3d |t by +1.|...pos =|
|000041f0| 20 69 3b 0d 09 09 09 0d | 09 72 65 74 75 72 6e 20 | i;.....|.return |
|00004200| 28 74 6f 28 70 6f 73 29 | 29 3b 0d 7d 0d 0d 2f 2f |(to(pos)|);.}..//|
|00004210| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00004220| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00004230| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00004240| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00004250| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|00004260| 5f 0d 0d 4e 53 74 72 69 | 6e 67 26 20 4e 53 74 72 |_..NStri|ng& NStr|
|00004270| 69 6e 67 3a 3a 6f 70 65 | 72 61 74 6f 72 2d 3d 20 |ing::ope|rator-= |
|00004280| 28 63 6f 6e 73 74 20 63 | 68 61 72 20 63 29 0d 7b |(const c|har c).{|
|00004290| 0d 09 63 6f 6e 73 74 20 | 63 68 61 72 20 2a 66 6e |..const |char *fn|
|000042a0| 61 6d 65 20 3d 20 22 6f | 70 65 72 61 74 6f 72 2d |ame = "o|perator-|
|000042b0| 3d 20 28 63 6f 6e 73 74 | 20 63 68 61 72 29 22 3b |= (const| char)";|
|000042c0| 0d 09 63 68 61 72 20 2a | 63 74 78 20 3d 20 22 78 |..char *|ctx = "x|
|000042d0| 22 3b 0d 09 75 6e 73 69 | 67 6e 65 64 20 6c 6f 6e |";..unsi|gned lon|
|000042e0| 67 20 69 6e 74 20 6e 65 | 77 73 74 61 72 74 3b 0d |g int ne|wstart;.|
|000042f0| 09 0d 09 63 74 78 5b 30 | 5d 20 3d 20 63 3b 0d 09 |...ctx[0|] = c;..|
|00004300| 69 66 20 28 28 6e 65 77 | 73 74 61 72 74 20 3d 20 |if ((new|start = |
|00004310| 73 74 72 73 70 6e 28 73 | 62 2d 3e 73 74 72 2c 20 |strspn(s|b->str, |
|00004320| 63 74 78 29 29 20 3d 3d | 20 30 29 0d 09 09 72 65 |ctx)) ==| 0)...re|
|00004330| 74 75 72 6e 20 28 2a 74 | 68 69 73 29 3b 0d 09 0d |turn (*t|his);...|
|00004340| 09 69 66 20 28 73 62 2d | 3e 72 65 66 73 20 3e 20 |.if (sb-|>refs > |
|00004350| 31 29 0d 09 7b 0d 09 09 | 73 74 72 62 6f 64 79 20 |1)..{...|strbody |
|00004360| 2a 6f 6c 64 5f 73 62 20 | 3d 20 73 62 3b 0d 09 09 |*old_sb |= sb;...|
|00004370| 0d 09 09 69 66 20 28 21 | 20 47 65 74 4e 65 77 53 |...if (!| GetNewS|
|00004380| 42 28 73 62 2d 3e 6c 65 | 6e 20 2d 20 6e 65 77 73 |B(sb->le|n - news|
|00004390| 74 61 72 74 29 29 0d 09 | 09 09 4f 55 54 5f 4f 46 |tart))..|..OUT_OF|
|000043a0| 5f 4d 45 4d 28 66 6e 61 | 6d 65 29 3b 0d 09 09 69 |_MEM(fna|me);...i|
|000043b0| 66 20 28 73 62 2d 3e 6c | 65 6e 20 3d 3d 20 30 29 |f (sb->l|en == 0)|
|000043c0| 0d 09 09 09 72 65 74 75 | 72 6e 20 28 2a 74 68 69 |....retu|rn (*thi|
|000043d0| 73 29 3b 0d 09 09 73 74 | 72 63 70 79 28 73 62 2d |s);...st|rcpy(sb-|
|000043e0| 3e 73 74 72 2c 20 6f 6c | 64 5f 73 62 2d 3e 73 74 |>str, ol|d_sb->st|
|000043f0| 72 20 2b 20 6e 65 77 73 | 74 61 72 74 29 3b 0d 09 |r + news|tart);..|
|00004400| 7d 0d 09 65 6c 73 65 0d | 09 7b 09 0d 09 09 75 6e |}..else.|.{....un|
|00004410| 73 69 67 6e 65 64 20 6c | 6f 6e 67 20 69 6e 74 20 |signed l|ong int |
|00004420| 6e 65 77 5f 6c 65 6e 20 | 3d 20 73 62 2d 3e 6c 65 |new_len |= sb->le|
|00004430| 6e 20 2d 20 6e 65 77 73 | 74 61 72 74 3b 0d 09 09 |n - news|tart;...|
|00004440| 0d 09 09 6d 65 6d 6d 6f | 76 65 28 73 62 2d 3e 73 |...memmo|ve(sb->s|
|00004450| 74 72 2c 20 73 62 2d 3e | 73 74 72 20 2b 20 6e 65 |tr, sb->|str + ne|
|00004460| 77 73 74 61 72 74 2c 20 | 6e 65 77 5f 6c 65 6e 20 |wstart, |new_len |
|00004470| 2b 20 31 29 3b 0d 09 09 | 69 66 20 28 21 20 52 65 |+ 1);...|if (! Re|
|00004480| 61 6c 6c 6f 63 53 74 72 | 42 75 66 28 6e 65 77 5f |allocStr|Buf(new_|
|00004490| 6c 65 6e 29 29 09 09 09 | 09 09 09 09 09 09 09 09 |len))...|........|
|000044a0| 09 2f 2f 20 73 68 72 69 | 6e 6b 20 73 74 72 69 6e |.// shri|nk strin|
|000044b0| 67 20 62 75 66 66 65 72 | 0d 09 09 7b 0d 09 09 09 |g buffer|...{....|
|000044c0| 73 62 2d 3e 6c 65 6e 20 | 3d 20 6e 65 77 5f 6c 65 |sb->len |= new_le|
|000044d0| 6e 3b 09 09 09 09 09 09 | 09 09 09 09 09 09 09 09 |n;......|........|
|000044e0| 09 2f 2f 20 6e 65 63 65 | 73 73 61 72 79 20 74 6f |.// nece|ssary to|
|000044f0| 20 6b 65 65 70 20 74 68 | 65 20 4e 53 74 72 69 6e | keep th|e NStrin|
|00004500| 67 20 69 6e 20 61 20 63 | 6f 68 65 72 65 6e 74 20 |g in a c|oherent |
|00004510| 73 74 61 74 65 0d 09 09 | 09 4f 55 54 5f 4f 46 5f |state...|.OUT_OF_|
|00004520| 4d 45 4d 28 66 6e 61 6d | 65 29 3b 09 09 09 09 09 |MEM(fnam|e);.....|
|00004530| 09 09 09 09 09 09 09 09 | 2f 2f 20 74 68 69 73 20 |........|// this |
|00004540| 22 4f 75 74 20 6f 66 20 | 4d 65 6d 6f 72 79 22 20 |"Out of |Memory" |
|00004550| 73 68 6f 75 6c 64 20 6e | 65 76 65 72 20 68 61 70 |should n|ever hap|
|00004560| 70 65 6e 20 2e 2e 2e 0d | 09 09 7d 0d 09 09 0d 09 |pen ....|..}.....|
|00004570| 09 73 62 2d 3e 6c 65 6e | 20 3d 20 6e 65 77 5f 6c |.sb->len| = new_l|
|00004580| 65 6e 3b 0d 09 7d 0d 09 | 0d 09 72 65 74 75 72 6e |en;..}..|..return|
|00004590| 20 28 2a 74 68 69 73 29 | 3b 0d 7d 0d 0d 2f 2f 5f | (*this)|;.}..//_|
|000045a0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000045b0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000045c0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000045d0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000045e0| 5f 5f 5f 5f 5f 5f 5f 5f | 5f 5f 5f 5f 5f 5f 5f 5f |________|________|
|000045f0| 0d 0d 4e 53 74 72 69 6e | 67 26 20 4e 53 74 72 69 |..NStrin|g& NStri|
|00004600| 6e 67 3a 3a 6f 70 65 72 | 61 74 6f 72 2d 3d 20 28 |ng::oper|ator-= (|
|00004610| 63 6f 6e 73 74 20 41 6c | 70 68 61 62 65 74 26 20 |const Al|phabet& |
|00004620| 63 74 78 29 0d 7b 0d 09 | 63 6f 6e 73 74 20 63 68 |ctx).{..|const ch|
|00004630| 61 72 20 2a 66 6e 61 6d | 65 20 3d 20 22 6f 70 65 |ar *fnam|e = "ope|
|00004640| 72 61 74 6f 72 2d 3d 20 | 28 63 6f 6e 73 74 20 41 |rator-= |(const A|
|00004650| 6c 70 68 61 62 65 74 26 | 29 22 3b 0d 09 75 6e 73 |lphabet&|)";..uns|
|00004660| 69 67 6e 65 64 20 6c 6f | 6e 67 20 69 6e 74 20 6e |igned lo|ng int n|
|00004670| 65 77 73 74 61 72 74 3b | 0d 09 0d 09 66 6f 72 20 |ewstart;|....for |
|00004680| 28 6e 65 77 73 74 61 72 | 74 3d 30 3b 20 28 6e 65 |(newstar|t=0; (ne|
|00004690| 77 73 74 61 72 74 20 3c | 20 73 62 2d 3e 6c 65 6e |wstart <| sb->len|
|000046a0| 29 20 26 26 20 28 63 74 | 78 2e 63 6f 6e 74 61 69 |) && (ct|x.contai|
|000046b0| 6e 73 28 73 62 2d 3e 73 | 74 72 5b 6e 65 77 73 74 |ns(sb->s|tr[newst|
|000046c0| 61 72 74 5d 29 29 3b 20 | 6e 65 77 73 74 61 72 74 |art])); |newstart|
|000046d0| 2b 2b 29 3b 0d 0d 09 69 | 66 20 28 6e 65 77 73 74 |++);...i|f (newst|
|000046e0| 61 72 74 20 3d 3d 20 30 | 29 0d 09 09 72 65 74 75 |art == 0|)...retu|
|000046f0| 72 6e 20 28 2a 74 68 69 | 73 29 3b 0d 09 0d 09 69 |rn (*thi|s);....i|
|00004700| 66 20 28 73 62 2d 3e 72 | 65 66 73 20 3e 20 31 29 |f (sb->r|efs > 1)|
|00004710| 0d 09 7b 0d 09 09 73 74 | 72 62 6f 64 79 20 2a 6f |..{...st|rbody *o|
|00004720| 6c 64 5f 73 62 20 3d 20 | 73 62 3b 0d 09 09 0d 09 |ld_sb = |sb;.....|
|00004730| 09 69 66 20 28 21 20 47 | 65 74 4e 65 77 53 42 28 |.if (! G|etNewSB(|
|00004740| 73 62 2d 3e 6c 65 6e 20 | 2d 20 6e 65 77 73 74 61 |sb->len |- newsta|
|00004750| 72 74 29 29 0d 09 09 09 | 4f 55 54 5f 4f 46 5f 4d |rt))....|OUT_OF_M|
|00004760| 45 4d 28 66 6e 61 6d 65 | 29 3b 0d 09 09 69 66 20 |EM(fname|);...if |
|00004770| 28 73 62 2d 3e 6c 65 6e | 20 3d 3d 20 30 29 0d 09 |(sb->len| == 0)..|
|00004780| 09 09 72 65 74 75 72 6e | 20 28 2a 74 68 69 73 29 |..return| (*this)|
|00004790| 3b 0d 09 09 73 74 72 63 | 70 79 28 73 62 2d 3e 73 |;...strc|py(sb->s|
|000047a0| 74 72 2c 20 6f 6c 64 5f | 73 62 2d 3e 73 74 72 20 |tr, old_|sb->str |
|000047b0| 2b 20 6e 65 77 73 74 61 | 72 74 29 3b 0d 09 7d 0d |+ newsta|rt);..}.|
|000047c0| 09 65 6c 73 65 0d 09 7b | 09 0d 09 09 75 6e 73 69 |.else..{|....unsi|
|000047d0| 67 6e 65 64 20 6c 6f 6e | 67 20 69 6e 74 20 6e 65 |gned lon|g int ne|
|000047e0| 77 5f 6c 65 6e 20 3d 20 | 73 62 2d 3e 6c 65 6e 20 |w_len = |sb->len |
|000047f0| 2d 20 6e 65 77 73 74 61 | 72 74 3b 0d 09 09 0d 09 |- newsta|rt;.....|
|00004800| 09 6d 65 6d 6d 6f 76 65 | 28 73 62 2d 3e 73 74 72 |.memmove|(sb->str|
|00004810| 2c 20 73 62 2d 3e 73 74 | 72 20 2b 20 6e 65 77 73 |, sb->st|r + news|
|00004820| 74 61 72 74 2c 20 6e 65 | 77 5f 6c 65 6e 20 2b 20 |tart, ne|w_len + |
|00004830| 31 29 3b 0d 09 09 69 66 | 20 28 21 20 52 65 61 6c |1);...if| (! Real|
|00004840| 6c 6f 63 53 74 72 42 75 | 66 28 6e 65 77 5f 6c 65 |locStrBu|f(new_le|
|00004850| 6e 29 29 09 09 09 09 09 | 09 09 09 09 09 09 09 2f |n)).....|......./|
|00004860| 2f 20 73 68 72 69 6e 6b | 20 73 74 72 69 6e 67 20 |/ shrink| string |
|00004870| 62 75 66 66 65 72 0d 09 | 09 7b 0d 09 09 09 73 62 |buffer..|.{....sb|
|00004880| 2d 3e 6c 65 6e 20 3d 20 | 6e 65 77 5f 6c 65 6e 3b |->len = |new_len;|
|00004890| 09 09 09 09 09 09 09 09 | 09 09 09 09 09 09 09 2f |........|......./|
|000048a0| 2f 20 6e 65 63 65 73 73 | 61 72 79 20 74 6f 20 6b |/ necess|ary to k|
|000048b0| 65 65 70 20 74 68 65 20 | 4e 53 74 72 69 6e 67 20 |eep the |NString |
|000048c0| 69 6e 20 61 20 63 6f 68 | 65 72 65 6e 74 20 73 74 |in a coh|erent st|
|000048d0| 61 74 65 0d 09 09 09 4f | 55 54 5f 4f 46 5f 4d 45 |ate....O|UT_OF_ME|
|000048e0| 4d 28 66 6e 61 6d 65 29 | 3b 09 09 09 09 09 09 09 |M(fname)|;.......|
|000048f0| 09 09 09 09 09 09 2f 2f | 20 74 68 69 73 20 22 4f |......//| this "O|
|00004900| 75 74 20 6f 66 20 4d 65 | 6d 6f 72 79 22 20 73 68 |ut of Me|mory" sh|
|00004910| 6f 75 6c 64 20 6e 65 76 | 65 72 20 68 61 70 70 65 |ould nev|er happe|
|00004920| 6e 20 2e 2e 2e 0d 09 09 | 7d 0d 09 09 0d 09 09 73 |n ......|}......s|
|00004930| 62 2d 3e 6c 65 6e 20 3d | 20 6e 65 77 5f 6c 65 6e |b->len =| new_len|
|00004940| 3b 0d 09 7d 0d 09 0d 09 | 72 65 74 75 72 6e 20 28 |;..}....|return (|
|00004950| 2a 74 68 69 73 29 3b 0d | 7d 0d 00 00 00 00 00 00 |*this);.|}.......|
|00004960| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004970| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004980| 00 00 01 00 00 00 01 62 | 00 00 00 62 00 00 00 5a |.......b|...b...Z|
|00004990| 5f 66 75 6e 63 29 3b 0d | 76 6f 69 64 20 71 73 6f |_func);.|void qso|
|000049a0| 72 74 28 76 6f 69 64 20 | 2a 2c 20 73 69 7a 65 5f |rt(void |*, size_|
|000049b0| 15 4e 53 74 72 69 6e 67 | 5f 53 75 62 73 74 72 69 |.NString|_Substri|
|000049c0| 6e 67 2e 63 78 78 02 00 | 00 00 50 61 72 74 53 49 |ng.cxx..|..PartSI|
|000049d0| 00 00 50 61 72 74 53 49 | 54 21 00 00 00 00 00 00 |..PartSI|T!......|
|000049e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000049f0| 00 00 ab 4c 25 38 00 00 | 00 00 00 00 01 bc 64 69 |...L%8..|......di|
|00004a00| 76 5f 74 20 6c 64 69 76 | 28 6c 6f 6e 67 2c 20 6c |v_t ldiv|(long, l|
|00004a10| 6f 6e 67 29 3b 0d 0d 69 | 6e 74 20 6d 62 6c 65 6e |ong);..i|nt mblen|
|00004a20| 28 63 6f 6e 73 74 20 63 | 68 61 72 20 2a 2c 20 73 |(const c|har *, s|
|00004a30| 69 7a 65 5f 74 29 3b 0d | 69 6e 74 20 6d 62 74 6f |ize_t);.|int mbto|
|00004a40| 77 63 28 77 63 68 61 72 | 5f 74 20 2a 2c 20 63 6f |wc(wchar|_t *, co|
|00004a50| 6e 73 74 20 63 68 61 72 | 20 2a 2c 20 73 69 7a 65 |nst char| *, size|
|00004a60| 5f 74 29 3b 0d 69 6e 74 | 20 77 63 74 6f 6d 62 28 |_t);.int| wctomb(|
|00004a70| 63 68 61 72 20 2a 2c 20 | 77 63 68 61 72 5f 74 29 |char *, |wchar_t)|
|00004a80| 00 00 00 04 00 07 00 02 | 00 00 00 0a 00 0a 06 47 |........|.......G|
|00004a90| 65 6e 65 76 61 67 00 00 | 00 48 00 0a 47 65 6e 65 |enevag..|.H..Gene|
|00004aa0| 76 61 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |va......|........|
|00004ab0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 07 00 02 |........|........|
|00004ac0| 00 2c 00 03 02 6d 03 3d | 00 2a 00 04 01 dc 02 7c |.,...m.=|.*.....||
|00004ad0| ab 46 8e ac 00 00 33 e9 | 00 00 33 e9 00 00 00 00 |.F....3.|..3.....|
|00004ae0| 00 00 00 00 01 00 00 00 | 01 62 00 00 00 62 00 00 |........|.b...b..|
|00004af0| 00 5a 00 d7 bb cc 17 82 | 00 00 00 1c 00 5a 00 02 |.Z......|.....Z..|
|00004b00| 45 54 41 42 00 00 00 1a | 45 46 4e 54 00 00 00 26 |ETAB....|EFNT...&|
|00004b10| 4d 50 53 52 00 00 00 32 | 03 ec ff ff 00 00 00 00 |MPSR...2|........|
|00004b20| 00 00 00 00 03 eb ff ff | 00 00 00 08 00 00 00 00 |........|........|
|00004b30| 03 ed ff ff 00 00 00 16 | 00 ed 60 7c 00 00 00 00 |........|..`|....|
|00004b40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004b50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004b60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004b70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+